获取函数返回Promise <pending>

时间:2019-02-12 18:11:54

标签: javascript json fetch

所以我的代码在这里返回Promise,并且由于我使用的是then语法,所以我不知道为什么会这样:-??

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

4 个答案:

答案 0 :(得分:7)

节点获取库中的

response.json()也返回一个Promise,而是尝试

sampleWithRename.txt

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

编辑:

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

sample.txt

答案 1 :(得分:2)

作为参数then给出的函数将异步执行(将来在服务器返回响应时),但是then本身会通过其{{3 }}

如果您想让代码看起来不太嵌套(更多作为同步代码),则可以使用await,但必须使用异步功能使整个代码不透明

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

答案 2 :(得分:0)

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

如果您看到承诺未决并且您的代码正确,并且花了太多时间试图弄清为什么console.log无法显示,请再次检查chrome的dev工具中是否已打开“ Info”。我只打开了警告,所以看不到console.log。

答案 3 :(得分:0)

这段代码可以正常工作,并显示出获取和获得承诺的好方法,而没有待解决的问题。

如果您遇到核心问题,请在服务器中运行此代码,然后在谷歌浏览器中下载此扩展程序“允许CORS:Access-Control-Allow-Origin”

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);
});