如何按顺序或并行 async JavaScript functions

阅读时长 5 分钟读完

在前端开发中,异步操作是非常常见的。JavaScript 提供了 async/await 关键字和 Promise 对象来实现异步操作,但当我们需要按照一定的顺序或同时执行多个异步操作时,就需要使用一些技巧来处理。

顺序执行异步函数

使用 async/await

我们可以使用 async/await 关键字来实现异步函数的顺序执行。下面是一个示例,假设有三个异步函数需要顺序执行:

-- -------------------- ---- -------
----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ----- -
  ----- --------
  ----- --------
  ----- --------
-

------

在上面的代码中,我们定义了三个异步函数 func1func2func3,它们都调用了一个异步操作 doSomethingAsync,然后输出一条消息表示自己已经完成了。最后,在 run 函数中通过 await 关键字按顺序依次调用这三个函数。

使用 Promise

除了 async/await 关键字,我们还可以使用 Promise 对象来实现异步函数的顺序执行。下面是一个示例,假设有三个异步函数需要顺序执行:

-- -------------------- ---- -------
-------- ------- -
  ------ -------------------------- -- -
    ------------------ -------
  ---
-

-------- ------- -
  ------ -------------------------- -- -
    ------------------ -------
  ---
-

-------- ------- -
  ------ -------------------------- -- -
    ------------------ -------
  ---
-

-------- ----- -
  -------
    ------------
    -------------
-

------

在上面的代码中,我们定义了三个异步函数 func1func2func3,它们都返回一个 Promise 对象,在 Promise 完成后输出一条消息表示自己已经完成了。最后,在 run 函数中通过 then 方法按顺序依次调用这三个函数。

并行执行异步函数

使用 Promise.all

如果我们需要同时执行多个异步函数,并等待它们全部完成后再执行下一步操作,可以使用 Promise.all 方法。下面是一个示例,假设有三个异步函数需要并行执行:

-- -------------------- ---- -------
----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ----- -
  ----- --------------------- -------- ----------
  ---------------- -------
-

------

在上面的代码中,我们定义了三个异步函数 func1func2func3,它们都调用了一个异步操作 doSomethingAsync,然后输出一条消息表示自己已经完成了。最后,在 run 函数中通过 Promise.all 方法并行执行这三个函数,并等待它们全部完成后再输出一条消息。

使用 Promise.race

如果我们需要同时执行多个异步函数,并等待其中任意一个完成后再执行下一步操作,可以使用 Promise.race 方法。下面是一个示例,假设有三个异步函数需要并行执行:

-- -------------------- ---- -------
----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ------- -
  ----- -------------------
  ------------------ -------
-

----- -------- ----- -
  ----- ---------------------- -------- ----------
  -----------

- ----------------------------------------------------------- --------
----------------------------------------------------------------------------------
纠错
反馈