Promise 重构技巧

阅读时长 6 min read

前言

Promise 是 JavaScript 中常用的异步编程方法,它可以有效地解决回调地狱的问题。但是,代码中过多的 Promise 也会使得代码难以维护。本文将介绍一些 Promise 重构技巧,帮助你更好地管理你的 Promise。

Promise 的基础知识

在开始介绍 Promise 的重构技巧之前,我们需要了解一些基本的 Promise 知识。

创建 Promise

创建 Promise 需要传入一个函数作为参数,并在函数内部调用 resolve 或 reject 其中的一个函数,代表函数执行成功或失败。

Promise 链

Promise 链是指在一个 Promise 对象中,通过 then 方法返回一个新的 Promise 对象的链式调用方式。

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

Promise.all

Promise.all 可以让多个 Promise 并行执行,当所有 Promise 都执行成功后,返回一个成功结果数组;若其中一个 Promise 执行失败,则返回第一个失败的 Promise 错误信息。

1. Promise 化函数

有些函数可能会返回一个回调函数,我们可以将这个函数改写成 Promise。

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

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

2. 合并多个 then

如果有多个 then,可以将它们合并。

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

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

----------

可以改写成:

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

----------

3. catch 只有一个的时候

如果只有一个 catch,可以将其放到链的最后面。

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

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

可以改写成:

4. Promise.all

对于 Promise.all 的返回结果,可以使用结构化赋值进行解构。

5. finally

如果有 finally,可以使用 catch 返回一个新的 Promise,使 finally 作为一个独立的链。

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

可以改写成:

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

结语

Promise 重构并不是一种普遍适用的解决方案,而是在一些特定的场合中使用,希望本文介绍的几个技巧能对你的编程工作有所帮助,让你的代码更加清晰和易于维护。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/677fcd48ce7f4861251a28f6

Feed
back