如何利用 ES8 的 async/await 实现多个 promise 同时并发执行

随着前端技术的发展,异步编程已成为前端开发中不可避免的部分,而 Promise 是异步编程中常见的解决方案之一。ES8(也称为 ECMAScript 2017)引入了 async/await 这一语言特性,可以方便地处理异步代码。

本文将介绍如何利用 ES8 的 async/await 实现多个 promise 同时并发执行。

什么是 async/await

async/await 是 ES8 中新增的异步编程语法糖,简化了异步代码的编写,并让代码更易读易写。

async 函数定义一个异步函数,函数返回一个 Promise 对象。在 async 函数内部,可使用 await 关键字等待一个异步操作的结果,await 关键字只能在 async 函数内部使用。

下面是一个例子:

如何利用 async/await 实现多个 promise 同时并发执行

假设有多个异步任务需要执行,可以使用 Promise.all() 一起执行,但是这种方式有个缺点,即需要等待所有任务完成后才执行下一步操作。如果只关心最终结果,而不关心任务之间的执行顺序,则此方式不如异步地处理结果来得有效率。

幸运的是,async/await 的语法允许我们同时异步地执行 promise,这样可以节省时间并提高效率。

实现方式如下:

在此示例中,我们将多个 URL 导入到 request 函数中,并使用 Array.map() 将它们全部转换为 Promise对象,然后在 Promise.all() 内执行,将所有 Promise 对象的结果组合成一个新的数组。

另外,函数甚至可以同时并发执行包含不同功能的 promise,因为 await 关键字阻塞当前函数执行,而不是阻塞整个应用程序。

总结

使用 async/await 来处理多个 promise 可以提高效率,并使代码更加易读易写。在将多个 promise 并发执行时,代码风格要优于使用 Promise.all() 阻塞等待,如果不关心任务之间的执行顺序,则并发执行会提高应用程序的效率。

代码风格清晰简单,可被任何人理解。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653a864f7d4982a6eb497727


纠错
反馈