【问题标题】:Getting the result from a fetch function in javascript从 javascript 中的 fetch 函数中获取结果
【发布时间】:2021-07-18 17:32:14
【问题描述】:

我正在努力从 js 中的 http 获取中获取实际结果数据。我可以使用 XMLHttpRequest 来完成,但我更愿意使用获取。我一直在尝试从这样的获取请求中获取结果:fetch('https://api.website.net/?);

我知道您需要分配一个 then 函数,但我尝试过的任何方法都没有奏效,我不断得到更多的 promise 对象并且没有结果。我模糊地理解,一旦它解决,您需要分配一个 .then 函数,但我真的不知道该怎么做。

(这是在浏览器js而不是节点)

【问题讨论】:

  • 一般有数千个(数百万个?)promise 示例并专门获取,没有minimal reproducible example 很难说出您的具体问题是什么。如果您在非浏览器环境中,则需要 polyfill fetch。
  • 大声笑哦,真的吗?你可以找到多个关于 promise 和 fetch 的教程。在 javascript 中阅读关于 promise 的内容比仅仅获得问题的简单答案更好

标签: javascript http fetch-api


【解决方案1】:

试试这个:

fetch(....)
    .then(response => response.json())
    .then(data => /* use data */);

【讨论】:

  • 你仍然需要等待承诺完成。
【解决方案2】:

我认为您对承诺感到困惑。 fetch 函数返回一个 promise 而不是数据。

我建议您阅读这个现代教程:https://javascript.info/fetch

这是一个非常简单的函数,它获取url并以json形式返回响应数据:

async function callApi(url) {
  const response = await fetch(url);
  const data = await response.json();

  return data;
}

let data = await callApi('https://api.website.net/?');
// do whatever you want with the data

在处理 primise 时,有 2 种语法,旧的 .then() 和新的 async/await使用async/await 更好,一般来说,所以我推荐使用async/await 语法。使用.then(),它看起来像这样:

// Not recommended alternative

fetch('https://api.website.net/?')
  .then(response => response.json())
  .then(data => {
    // do whatever you want with the data
  });

【讨论】:

  • 您帖子的第二部分具有误导性。 async/await 只是原始承诺的糖衣。 .then 是原始承诺的合成器的一部分。
猜你喜欢
  • 2016-01-16
  • 2019-06-04
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2017-10-17
  • 2021-10-24
  • 2022-07-18
  • 1970-01-01
相关资源
最近更新 更多