npm包 promise-to-async 使用教程

阅读时长 7 分钟读完

前言

JavaScript 中 async/await 已经成为了解决异步问题的标配,但是在遗留应用或者是需要进行大量数据处理的情况下,callback 和 Promise 仍然是比较常见的。而本文推荐的 npm 包 promise-to-async 就是帮助我们将 callback 和 Promise 转化成 async/await 的利器。

何时使用

当我们需要将一个 callback/Promise 异步函数转化为 async/await 函数时,我们可以使用 promise-to-async,同时也可以将在 callback 和 Promise 之间进行不断转换的代码进行简化和优化。比如一个普通的 callback 函数:

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

使用 promise-to-async 包后,我们代码会变得更加优雅:

安装

使用 npm 可以非常方便地安装 promise-to-async 包:

使用示例

在上文中我们已经介绍了 promise-to-async 的基本使用方法。下面我们来看一些高级的用法示例。

处理 Promise 和 Callback 混合的函数

当我们在处理一些遗留代码时,经常会遇到 Promise 和 Callback 混合的函数,这时候我们需要将其转化为 async/await 函数,比如:

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

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

这种情况下,我们需要对传入的 callback 进行处理,通过 promise-to-async 将其转化为 async/await 形式的函数。

处理带 Error 的回调函数

我们经常会遇到一些以 callback 的方式返回错误信息的函数,比如:

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

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

使用 promise-to-async 的方式进行转化:

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

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

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

处理错误编码的回调函数

有时候我们遇到的回调函数返回的错误信息是一串编码,需要进行解析后才能使用,比如:

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

使用 promise-to-async 实现转化:

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

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

处理多个回调函数参数的场景

一些库中的回调函数需要返回多个值,这时候可以利用 promise-to-async 进行转化和解构:

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

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

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

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

结语

promise-to-async 是一个非常实用的轻量级 npm 包,可以帮助我们解决一些 callback/Promise 异步函数在处理数据量大或遗留应用时的问题,同时还能让我们在使用 async/await 时代码更加整洁、优雅。代码示例中的异步函数和回调函数可以是任何格式,只需要保证有 callback/Promise 形式的传参即可。

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

纠错
反馈