首页 >web前端 >js教程 >为什么 `response.json()` 在 Fetch 中返回 Promise,如何访问结果?

为什么 `response.json()` 在 Fetch 中返回 Promise,如何访问结果?

DDD
DDD原创
2024-12-15 17:24:13931浏览

Why Does `response.json()` Return a Promise in Fetch, and How Can I Access the Result?

深入了解 Fetch 响应处理中的 Promise 和 Promise 链

在试验 fetch() API 时,出现了关于行为的有趣观察的.json().

观察:

当在传递给 .then() 的对象文字中返回 response.json() 时,将获得一个 Promise 对象。但是,当直接从 .then() 处理程序返回时,它返回实际值。

说明:

  • 为什么response.json返回一个promise?

调用response.json会检索另一个promise HTTP 响应正文,尚未加载。这是因为您在收到标头后立即收到了响应对象,但正文尚未可用。

  • 为什么从 .then() 返回的 Promise 会提供值?

这是承诺的一个基本方面。 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn