使用 thenify-all 转换回调式函数

阅读时长 4 分钟读完

在前端开发中,我们经常需要使用异步编程。回调函数在这种情况下被广泛使用,但是它们可能会带来一些不可避免的问题,比如回调地狱和错误处理。

Promises 提供了一种更好的方式来处理异步编程,它们是一种基于时间的值容器,它们可能会异步完成或失败。Promise 可以地动态地收集异步数据并返回。这让我们的代码更加清晰简洁,更易于调试。

但是在现实中,我们可能还需要使用回调式函数。我们可以使用 thenify-all 实现它们的转换。然后就可以将回调式函数转换成 Promise 函数。让我们来看一下如何使用这个 npm 包。

安装 thenify-all

使用 npm 命令来安装 thenify-all:

使用 thenify-all

thenify-all 允许我们将一个或多个带回调的函数转换为 Promise 函数。首先,我们需要导入 thenify-all 和要转换的模块:

现在我们可以通过 thenifyAll 函数来将 fs 的所有回调式函数转换为 Promise 函数:

现在,我们就可以使用 Promise 格式的 fsPromise 函数了:

这样我们就可以通过 Promise 的方式来读取文件,而不是使用原生的 fs.readFile 回调函数。

同时转换多个函数

如果要转换多个函数,可以使用 thenify-all 的第二个参数。该参数是一个数组,其中包含要转换为 Promise 的函数的名称。

以转换 fs、request 和 mysql 的所有回调函数为例:

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

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

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

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

在上面的例子中,我们将 fs、request 和 mysql 这三个模块的每个函数都转换成了 Promise 函数。在依次完成每个模块的转换后,我们就可以像直接使用原始回调函数一样地使用这些函数,当然,它们已经是 Promise 函数了。

总结

thenify-all 是一个有用的 npm 包,可以让我们将 Node.js 中回调式函数在不修改源代码的情况下转换为 Promise 函数。使用 thenify-all 可以将回调地狱转换为可读性更好的代码,同时也使错误处理更加容易。

希望这篇文章对你有所帮助!

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

纠错
反馈