从ReadableStream对象中检索数据?

2022-08-30 00:11:06

如何从对象获取信息?ReadableStream

我正在使用Fetch API,但我没有从文档中看到这一点。

正文作为返回,我只想访问此流中的属性。在浏览器开发工具中的响应下,我似乎以JavaScript对象的形式将此信息组织到属性中。ReadableStream

fetch('http://192.168.5.6:2000/api/car', obj)
    .then((res) => {
        if(!res.ok) {
            console.log("Failure:" + res.statusText);
            throw new Error('HTTP ' + res.status);
        } else {
            console.log("Success :" + res.statusText);
            return res.body // what gives?
        }
    })

答案 1

为了从 中访问数据,您需要调用其中一种转换方法(此处提供文档)。ReadableStream

例如:

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(function(response) {
    // The response is a Response instance.
    // You parse the data into a useable format using `.json()`
    return response.json();
  }).then(function(data) {
    // `data` is the parsed version of the JSON returned from the above endpoint.
    console.log(data);  // { "userId": 1, "id": 1, "title": "...", "body": "..." }
  });

编辑:如果您的数据返回类型不是 JSON 或您不需要 JSON,则使用text()

例如:

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(function(response) {
    return response.text();
  }).then(function(data) {
    console.log(data); // this will be a string
  });

希望这有助于解决问题。


答案 2

有些人可能会发现一个有用的例子:async

var response = await fetch("https://httpbin.org/ip");
var body = await response.json(); // .json() is asynchronous and therefore must be awaited

json()将响应的正文从 a 转换为 json 对象。ReadableStream

这些语句必须包装在函数中,但是您可以直接在 Chrome 的控制台中运行语句(从版本 62 开始)。awaitasyncawait