Promise 如何处理不同结果的条件分支

阅读时长 4 分钟读完

在前端开发中,我们经常会遇到需要等待异步操作完成后才能继续执行的情况。为了解决这个问题,ES6 引入了 Promise,它可以帮助我们优雅地处理异步操作并处理不同结果的条件分支。

Promise 基本用法

Promise 表示一个异步操作的结果,有三种状态:Pending(进行中)、Resolved(已完成)和 Rejected(已失败)。一旦 Promise 进入 Resolved 或者 Rejected 状态,就表明这个异步操作完成了,接下来就会调用 then 或 catch 方法传入对应的回调函数处理结果。

具体使用方式如下:

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

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

上述代码中,我们创建了一个 Promise 对象实例 p,它会在 1 秒后根据随机数的大小决定进入 Resolved 或者 Rejected 状态,并传入相应的参数。使用 then 方法添加 Resolved 的回调函数,使用 catch 方法添加 Rejected 的回调函数,处理不同结果的条件分支。

Promise 处理多个异步操作

有时候我们需要同时处理多个异步操作的结果,例如并发请求多个接口。Promise.all 方法可以帮助我们等待所有异步操作完成,并统一处理所有结果的条件分支。

具体使用方式如下:

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

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

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

上述代码中,我们创建了两个异步操作 p1 和 p2,它们分别在 2 秒和 1 秒后完成,并返回不同的结果。使用 Promise.all 方法并传入两个 Promise 实例的数组,等待所有操作完成后执行统一的回调函数。

Promise 处理多个异步操作中的任意一个

有时候我们只需要等待多个异步操作中的任意一个完成,并处理对应的结果的条件分支。Promise.race 方法可以帮助我们实现这一需求。

具体使用方式如下:

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

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

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

上述代码中,我们创建了两个异步操作 p1 和 p2,它们分别在 1 秒和 2 秒后完成,并返回不同的结果。使用 Promise.race 方法并传入两个 Promise 实例的数组,等待第一个操作完成后执行对应的回调函数。

总结

Promise 可以优雅地处理异步操作,并处理不同结果的条件分支,同时可以处理多个异步操作的结果、多个异步操作中的任意一个的结果。在实际开发中,Promise 是一个非常常用的工具,掌握 Promise 的使用方法可以帮助我们编写更加美丽和高效的代码。

总之,学习 Promise 不仅仅是为了了解 Promise,更是学习异步编程和条件分支的需求,是通过 Promise 实现对开发业务的深入理解和实践。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6462f852968c7c53b04038be

纠错
反馈