当前位置: 代码迷 >> JavaScript >> fetch 函数返回 Promise
  详细解决方案

fetch 函数返回 Promise

热度:235   发布时间:2023-06-08 09:23:15.0

所以我这里的代码返回一个 Promise 并且因为我使用then语法我不知道为什么会发生这种情况:-??

fetch('someurltoAJsonFile.json')
  .then(function(response) {
    console.log(response.json());});

node-fetch 库中的 response.json() 也返回一个承诺,而不是尝试

fetch('someurltoAJsonFile.json')
  .then(response => response.json())
  .then(data => {
    console.log(data)
  });

您可以查看有关它的更多详细信息

编辑:

似乎返回的响应不在有效的 json 中,因此为了完整起见,这里是文本代码

fetch('someurltoAJsonFile.json')
  .then(response => response.text())
  .then(data => {
    console.log(data)
  });

给出的函数then参数将被异步执行(在某个时候,当你的服务器返回的响应未来),但then自己立即返回承诺(以同步方式),其

如果您希望代码看起来不那么嵌套(更多是同步代码),您可以使用 await 但您必须使用 async 函数使整个代码不透明

async function load() 
{
  let response = await fetch('someurltoAJsonFile.json');
  let data = await response.json();
  console.log(data);
}

争论这是否有资格作为答案,但我今天遇到了类似的情况,导致我提出这个问题,即使我的问题最终与环境有关。

如果您看到 promise 未决并且您的代码是正确的,并且您花了太多时间试图找出 console.log 未显示的原因,请仔细检查您是否在 chrome 的开发工具中打开了“信息”。 我只打开了警告,所以我没有看到我的 console.log。

这段代码有效并展示了一种很好的方式来获取并获得承诺,而不会出现未决问题。

如果您有 cors 问题,请在您的服务器中运行此代码在谷歌浏览器中下载此扩展程序“允许 CORS:访问控制允许来源”

 async function invoices() { let response = await fetch('https://blockchain.info/latestblock?utm_medium=referral&utm_campaign=ZEEF&utm_source=https%3A%2F%2Fjson-datasets.zeef.com%2Fjdorfman'); let data = await response.json(); console.log(data); return data; } invoices().then(data => { console.log(data); });

  相关解决方案