npm 包 apr-awaitify 使用教程

阅读时长 4 分钟读完

简介

apr-awaitify 是一个 Node.js 的 NPM 包,该包可以将使用 Node.js 中回调函数的函数转换为 Promise 对象。它极大地简化了 Node.js 项目开发中使用并发处理的难度。

安装

使用 npm 进行安装:

代码示例

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

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

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

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

功能 & 设计思想

在 Node.js 官方文档中,回调函数是处理异步操作最常用的方式。有些函数导出的是异步 API,使用时必须提供回调函数来处理异步返回结果。使用回调函数处理异步函数在代码编写过程中经常会遇到不少问题:回调函数嵌套、多次错误处理等,还有一些错误不容易被发现。

在这种情况下,利用 Promise 将异步函数进行封装就可以将函数改写成使用 async/await 的方式调用,提高了代码的可读性,可维护性和安全性,也方便了异步流程的控制和管理。

apr-awaitify 正是利用这个思想,将回调函数改写成 Promise 对象。

原理

apr-awaitify 的原理相当简单,它利用了 Node.js 内置的 util 包中的 promisify 函数,该函数可以将使用回调函数的函数自动转换为 Promise 对象。

使用 & 初步试用

apr-awaitify 的使用非常简单,只需要用当前要操作的函数进行包装:

这里我们将 fs 的 readdir 函数包装成了 readdirAsync

实现原理

apr-awaitify 的核心是利用了 Node.js 内置的 util 包中的 promisify 函数,该函数可以将使用回调函数的函数自动转换为 Promise 对象。

promisify 函数的源码非常简单,具体实现如下:

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

实现逻辑非常简单,fn 参数表示需要转换为 Promise 的函数,返回值是返回一个新的函数。新的函数将传递给原有的函数的参数转换为数组传入,然后返回一个新的 Promise 对象,resolve() 传入的是被传递的回调函数的值,reject() 则表示回调函数返回的错误信息。

因此,apr-awaitify 只需使用内置的 promisify 函数即可将出现回调的函数转换为 Promise 对象。

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

纠错
反馈