分解响应对象后,为什么会引发“无法对'Response'执行'json'”错误

时间:2019-06-10 12:40:51

标签: typescript fetch-api

我正在实现自己的使用fetch APIfetch方法。 在执行此操作时,遇到一个无法解释的错误。

代码片段如下:

    const response: Response = await fetch(url, options);
    const { json } = response;

    return json();

问题是该代码触发了承诺拒绝:

  

TypeError:无法在“ Response”上执行“ json”:主体流已锁定

我知道json方法只能被调用一次,它确实可以被调用。
fetch本身不会失败。如果我直接返回response.json(),则不会出现拒绝。

我的问题是为什么要对response对象使用解构分配,并锁定响应body的{​​{1}}。

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是,对对象进行解构会导致json方法与response的原始范围解耦。

一个解决方案为:

    const response: Response = await fetch(url, options);
    const { json } = response;

    return json.bind(response)();