gpt4 book ai didi

javascript - 为什么记录 fetch() 的结果 "break"是 ("body stream is locked")?

转载 作者:搜寻专家 更新时间:2023-11-01 05:19:19 26 4
gpt4 key购买 nike

在试图理解返回结果时,我得到了这个简单的东西:

    fetch('http://localhost:8081/position', {mode: 'cors'})
.then(response => {return response.json()})
.then(result => console.log(result));

有效 - 它打印响应的 json。

但这不起作用:

    fetch('http://localhost:8081/position', {mode: 'cors'})
.then(response => {console.log(response.json()); return response.json();})
.then(result => console.log(result));

它显示Uncaught (in promise) TypeError: Failed to execute 'json' on 'Response': body stream is locked

这是为什么?

最佳答案

promise 并没有真正失效,但问题是 .json()(和 .body().text()) 只能调用一次。

HTTP 请求被建模为流,您无法真正从流中读取两次。

但是,您可以将 .json() promise 的结果放在一个变量中,然后返回它。

fetch('http://localhost:8081/position', {mode: 'cors'})
.then(response => response.json())
.then(jsonBody => { console.log(jsonBody); return jsonBody; })
.then(result => console.log(result));

关于javascript - 为什么记录 fetch() 的结果 "break"是 ("body stream is locked")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com