从ReadableStream对象检索数据?

我如何从ReadableStream对象中获取信息

我正在使用Fetch API,但从文档中看不出来。

正文以a形式返回ReadableStream,我只想访问此流中的一个属性。在浏览器开发工具的Response下,我似乎以JavaScript对象的形式将这些信息组织到了属性中。

fetch('http://192.168.5.6:2000/api/car', obj)
    .then((res) => {
        if(res.status == 200) {
            console.log("Success :" + res.statusText);   //works just fine
        }
        else if(res.status == 400) {
            console.log(JSON.stringify(res.body.json());  //res.body is undefined.
        }

        return res.json();
    })
乐猪猪2020/03/12 12:45:39

某些人可能会发现一个async有用示例:

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

json()将响应的主体从ReadableStream转换为json对象。

await语句必须被包裹在一个async功能,但是可以运行await在Chrome的控制台直接语句(如版本62)。

Davaid阳光小卤蛋2020/03/12 12:45:39

我不喜欢那时的连锁店。然后,第二个将无法访问状态。如前所述,“ response.json()”返回一个承诺。在类似于第二秒的行为中返回“ response.json()”的当时结果。它具有在响应范围内的额外好处。

return fetch(url, params).then(response => {
    return response.json().then(body => {
        if (response.status === 200) {
            return body
        } else {
            throw body
        }
    })
})
伽罗小卤蛋米亚2020/03/12 12:45:39

聚会晚了一点,但是在使用Sharepoint框架从Odata $ batch请求产生的ReadableStream中获取有用的东西时遇到了一些问题。

与OP有类似的问题,但是在我的案例中,解决方案是使用与.json()不同的转换方法。以我为例,.text()就像一种魅力。但是,必须进行一些修改才能从文本文件中获取一些有用的JSON。

DavaidAPro2020/03/12 12:45:39

res.json()返回承诺。尝试...

res.json().then(body => console.log(body));