首頁  >  文章  >  web前端  >  如何使用'async/await”在 JavaScript 中並行化非同步呼叫?

如何使用'async/await”在 JavaScript 中並行化非同步呼叫?

Barbara Streisand
Barbara Streisand原創
2024-11-27 17:28:14232瀏覽

How Can I Parallelize Asynchronous Calls in JavaScript using `async/await`?

使用await並行化非同步呼叫

使用ES7中引入的async/await語法時,必須了解將執行多個await語句順序而不是並行。這意味著在一個函數呼叫中等待結果將暫停執行,直到前一個呼叫完成。為了避免這種情況,有幾種選擇。

Node.js 中最簡單的方法之一是利用 Promise.all() 函數。 Promise.all() 允許您建立單一的 Promise,當所有提供的 Promise 都解析時,該 Promise 會解析;當其中任何一個 Promise 拒絕時,該 Promise 會被拒絕。透過將一組 Promise 傳遞給 Promise.all(),您可以確保它們全部同時運作。

這是一個範例:

const someCall = () => new Promise((resolve) => setTimeout(() => resolve("some value"), 100));
const anotherCall = () => new Promise((resolve) => setTimeout(() => resolve("another value"), 200));

await Promise.all([someCall(), anotherCall()])
  .then((results) => {
    const [someResult, anotherResult] = results;
    // Do something with the results.
  });

在這個範例中, someCall() anotherCall() 會並行執行,結果將在 results 陣列中提供。

另一種方法是使用 async 函式庫,它為非同步操作提供附加功能。 async.parallel() 函數可讓您指定要並行運行的函數數組,以及在所有函數完成後調用的回調。

這是使用 async.parallel() 的範例:

const async = require("async");

const someCall = (callback) => setTimeout(() => callback(null, "some value"), 100);
const anotherCall = (callback) => setTimeout(() => callback(null, "another value"), 200);

async.parallel([someCall, anotherCall], (err, results) => {
  if (err) {
    // Handle any errors.
  } else {
    const [someResult, anotherResult] = results;
    // Do something with the results.
  }
});

Promise.all() 和 async.parallel() 都提供了並行執行非同步函數的可靠方法。選擇最適合您的專案要求和偏好的方法。

以上是如何使用'async/await”在 JavaScript 中並行化非同步呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn