首页 > 解决方案 > 在异步函数中同时进行 fetch(),并在使用 JavaScript 完成后返回

问题描述

我正在编写一个函数,我希望 2 次提取异步拍摄,但是,我将等到所有提取完成后再函数返回。

如果我放在await每个前面,fetch()那么这 2 次提取将按顺序发出,但如果我没有await,该函数将在所有 2 次提取完成之前返回。

我想知道是否有一种标准方法可以很好地完成此功能。这是我的示例代码:

async function sendRequest() {
  fetch(url1);
  fetch(url2);

  return something;
}

标签: javascriptpromise

解决方案


全部使用承诺。它将异步运行所有 Promise 并等待所有 Promise 完成。

async function sendRequest() {
  try {
     let result = await Promise.all([
        fetch(url1);
        fetch(url2);
     ])
  } catch(err) {
     console.log(err); // TypeError: failed to fetch
  }
  console.log(result);

  return something;
}

注意:如果只有 1 个 Promise 失败,其他所有 Promise 也会失败


推荐阅读