【问题标题】:How to get the api response to a variable from fetch call [duplicate]如何从 fetch 调用中获取对变量的 api 响应 [重复]
【发布时间】:2019-11-15 06:04:50
【问题描述】:

我正在尝试使用 fetch 进行 api 调用。但是我得到了一个承诺,而不是数据。如果我在 fetch 内部解决了这个承诺,我得到的数据不在外部。如何从 api 获取结果到数据变量。

export function getAllBooks() {
    var data= fetch('https://api.myjson.com/bins/9paef').then((data) => {
        data.json().then(function (response) {
         return response
        });
    })
    console.log("data",data)
}

【问题讨论】:

  • @Quentin 这与您提供的链接不完全相同。我们应该打开这个问题。
  • @Ayan — 这两个问题都是“如何使用回调内部、回调外部和回调执行之前生成的值?”。它是重复的。每天都会有十几个这样的问题被问到,副本有一些非常详细且评价很高的答案。
  • @Quentin 这更多是用 fetch,提供的链接更多是用 ajax。我同意底层逻辑是相似的。但在上层他们有点不同。对于初学者,这个问题可能会有所帮助
  • 没有实际区别。答案是一样的。
  • @pKay — 您似乎错过了以重复的形式结束问题的要点。谷歌会找到这个问题,然后人们会到达这个页面,然后他们会看到页面顶部的黄色大框并看到很好的答案。

标签: javascript ecmascript-6 es6-promise fetch-api


【解决方案1】:

您可以使用await,它允许我们等待异步请求的响应。使用示例如下:

async function getAllBooks() {
  const response = await fetch('https://api.myjson.com/bins/9paef');
  const data = await response.json();
  //console.log('Data', data);
  return data;
}


getAllBooks().then((books) => {
  result = books;

  console.log("Books", result);
});

See it on jsbin.com

【讨论】:

  • 这是 async/await 的模糊描述类型,导致问题抱怨他们 return data from getAllBooks 返回值是一个承诺。
  • @Quentin 返回值不是承诺。如果您没有问同样的问题,请不要猜测
  • 感谢您的澄清,我误解了您的问题!然后我将添加更多详细信息
  • 关于重复问题有一些非常好的答案。
猜你喜欢
  • 1970-01-01
  • 2017-09-07
  • 2021-09-13
  • 2017-01-04
  • 2017-07-09
  • 1970-01-01
  • 2020-10-29
  • 2020-11-17
  • 2020-08-07
相关资源
最近更新 更多