使用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中文网其他相关文章!