深入了解 Fetch 响应处理中的 Promise 和 Promise 链
在试验 fetch() API 时,出现了关于行为的有趣观察的.json().
观察:
当在传递给 .then() 的对象文字中返回 response.json() 时,将获得一个 Promise 对象。但是,当直接从 .then() 处理程序返回时,它返回实际值。
说明:
调用response.json会检索另一个promise HTTP 响应正文,尚未加载。这是因为您在收到标头后立即收到了响应对象,但正文尚未可用。
这是承诺的一个基本方面。 Promise 允许从回调函数返回 Promise 并随后采用,从而无需嵌套即可实现可链接性。
替代方法:
等待 JSON 后访问响应状态body,你可以采用不同的方法:
使用嵌套返回中间结果.then() 链:
fetch(url) .then(response => response.json()) .then(data => ({ data: data, status: response.status })) .then(res => { console.log(res.status, res.data.title); });
利用异步函数并等待:
const response = await fetch(url); const data = await response.json(); console.log(response.status, data.title);
注意:
始终建议先验证响应状态访问响应内容,因为它可能并不总是包含 JSON 数据。
以上是为什么 `response.json()` 在 Fetch 中返回 Promise,如何访问结果?的详细内容。更多信息请关注PHP中文网其他相关文章!