为什么要
response.json兑现承诺?
因为您在
response所有标头到达后立即收到。调用
.json()使您对尚未加载的http响应的正文有了另一个保证。另请参见[为什么来自Javascriptfetch API的响应对象是一个承诺?。
如果我从
then处理程序返回承诺,为什么我会得到该值?
因为这就是诺言的工作方式。从回调返回承诺并被采纳的能力是它们最相关的功能,它使它们可链接而不嵌套。
您可以使用
fetch(url).then(response => response.json().then(data => ({ data: data, status: response.status })).then(res => { console.log(res.status, res.data.title)}));或其他任何访问先前的Promise的方法都会导致.then()链在等待json主体后获得响应状态。



