簡體   English   中英

使用 async with map 執行多個 promise

[英]Using async with map to execute multiple promises

我正在嘗試使用帶有地圖的異步執行多個承諾:

const testAsyncFunction = async function testAsyncFunction() {
  const array = ["var1", "var2"];
  const promises = array.map(
    (variable) =>
      async function () {
        // This doesn't get logged
        console.log(
          "🚀 ~ file: coursesServices.js ~ line 853 ~ testAsyncFunction ~ variable",
          variable
        );
        return variable + "TEST";
      }
  );
  const promises_results = await Promise.all(promises);
  // This gets logged
  console.log(
    "🚀 ~ file: coursesServices.js ~ line 861 ~ testAsyncFunction ~ promises_results",
    promises_results
  );
};
testAsyncFunction();

這里的問題是 map 函數中的代碼永遠不會被執行。

這是在控制台中記錄的內容:

🚀 ~ file: coursesServices.js ~ line 861 ~ testAsyncFunction ~ promises_results [ [AsyncFunction (anonymous)], [AsyncFunction (anonymous)] ]

我不明白我做錯了什么。 但是,我有一種感覺 Promise.all 不適用於異步函數數組。

您應該在地圖內使用new promise 否則promise.all不關心地圖

 (async() => { const arr = [1, 2, 3] const res = arr.map((a) => { return new Promise((resolve) => { setTimeout(() => { //async call resolve(a + 'finished') }, 1000) }) }) console.log(await Promise.all(res)) })()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM