首页 > web前端 > js教程 > 如何使用'async/await”在 JavaScript 中并行化异步调用?

如何使用'async/await”在 JavaScript 中并行化异步调用?

Barbara Streisand
发布: 2024-11-27 17:28:14
原创
302 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板