我正在实现自己的使用fetch API的fetch
方法。
在执行此操作时,遇到一个无法解释的错误。
代码片段如下:
const response: Response = await fetch(url, options);
const { json } = response;
return json();
问题是该代码触发了承诺拒绝:
TypeError:无法在“ Response”上执行“ json”:主体流已锁定
我知道json
方法只能被调用一次,它确实可以被调用。
fetch
本身不会失败。如果我直接返回response.json()
,则不会出现拒绝。
我的问题是为什么要对response
对象使用解构分配,并锁定响应body
的{{1}}。
答案 0 :(得分:1)
发生这种情况的原因是,对对象进行解构会导致json
方法与response
的原始范围解耦。
一个解决方案为:
const response: Response = await fetch(url, options);
const { json } = response;
return json.bind(response)();