npm包buble-promisify使用教程

阅读时长 8 分钟读完

介绍

buble-promisify 是一个实用的 npm 包,它可以帮助我们将1个回调函数的异步API,转化为它的 Promise 版本。这是一种常见的手段,用于异步代码的可读性和便利性,特别是在 Node.js 中。同时,Promises 是 ES6 引入的重要功能之一,它可以大大提高异步代码的可读性和可维护性。

在本文中,我们将详细介绍如何使用 buble-promisify 的各种功能,包括基本的使用、错误处理、在一个Class中使用等。只要使用 Node.js 进行编程,本文将院学习笔记。

安装

安装 buble-promisify,可以使用如下命令:

基本使用

下面的示例演示一个基础的 buble-promisify 的使用例子。假设要向url发送一个 HTTP GET 请求,解析响应并打印通知或错误消息。在不使用 buble-promisify 的情况下,该代码可能是以下:

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

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

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

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

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

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

  ------------------
--
展开代码

而如果使用 buble-promisify,代码将变得更加简洁和易读:

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

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

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

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

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

-----------------------------------
  ------------- -- -
    ------------------
  --
  ------------ -- -
    ------------------
  --
展开代码

在这种情况下,warp-promisify 将 fetch 函数转换为它的 Promise 版本,并将其替换为原稿的返回值。该代码比不使用 buble-promisify 更加简洁、易读和优雅。

错误处理

当使用返回 Promise 的函数时,错误处理是至关重要的。Promise 的本意是解决回调地狱(callback hell)的问题,让异步代码看起来更加优雅。同时,它也会提高代码的可读性和可维护性。因此,在将回调函数转换为 Promise 中,错误处理和处理 Promise 的错误一样重要。在 buble-promisify 中,可以通过 .catch() 方法捕获 Promise 中的错误。

例如以下代码,当错误发生时,使用 catch() 方法捕获错误并打印出错误消息。

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

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

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

----------------------------- -- -
  ----------------
-------------- -- -
  ------------------
--
展开代码

在类中使用

假设要创建一个名为 UserService 的类,该类使用 getUsers 方法从服务器获取所有用户。当不使用 buble-promisify 时,该类可能如下所示:

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

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

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

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

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

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

  ------------------
--
展开代码

而当要在 UserService 中使用 buble-promisify 时,只需包装 getUsers 函数并将其转换为 Promise。可以通过以下代码实现:

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

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

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

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

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

----- ----------- - --- -------------
----------------------------------- -- -
  ------------------
-------------- -- -
  ------------------
--
展开代码

结论

在本文中,我们学习了如何使用 buble-promisify,并演示了如何在不同情况下使用它的不同功能。buble-promisify 可以在 Node.js 的编程中大大提高代码的可读性和可维护性。除非你非常膜不开心,否则在你的下一个Node.js 流式应/s中试试它,相信一定会给您留下深刻印象。

参考文献

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

纠错
反馈

纠错反馈