NPM 包 co-express 使用教程

阅读时长 4 分钟读完

前言

Node.js 常用模块机制使得模块之间的耦合非常小,各模块互不关联。这样在开发复杂的项目时,我们需要很多个模块同时工作,但每个模块的工作又不能相互阻碍。因此,针对这个问题,co-express 库应运而生。

co-express 是基于 Generator 函数实现的 Express 中间件,可以在 Express 应用中使用 Generator 函数和 Promise 特性,实现一个异步流程控制同时提供控制性很强的调用方式。

有关 co-express 库的具体使用方式,在以下文章中有所介绍。

需求场景

我们假设我们的公司需要开发一个能够查询去过京东、淘宝、天猫等各大网站购物的消费者订单(下单时间、货物信息、价格等)。因此,我们需要开发一个后台系统能够查询消费者订单。

在实际情况中,订单的信息数据非常大,因此我们需要在查询订单时,异步读取订单数据。但我们需要保证异步读取数据的顺序不发生变化。即,我们需要保证 A 网站下达订单、B 网站下达订单、C 网站下达订单的顺序不会变化。

下面,我们来介绍如何利用 co-express 库和 Promise 技术实现异步流程控制。

安装 co-express

在使用 co-express 库之前,我们需要用 npm 命令安装该库。

异步读取订单数据

下面,我们实现了一个函数 getOrderInfo,用于模拟异步从服务器读取订单数据的过程。函数签名如下:

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

该函数的实现方法较为简单。我们通过 setTimeout 函数用随机的时间模拟了异步读取订单数据的过程。因此,我们可以对该函数进行包装,利用 co-express 库控制异步的执行顺序,实现订单数据的按序读取。

通过 co-express 控制异步执行顺序

下面,我们通过 co 函数来实现控制异步执行顺序的过程。co-express 库可以让我们平顺地堆叠操作,一直到我们完成异步操作。因此,我们不再需要显式地嵌套异步操作的回调函数,使得我们的代码更简洁易懂。核心代码如下:

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

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

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

其中,co 函数使得 express 应用程序能够正确地处理异步错误。

以上就是利用 co-express 库和 Promise 技术实现异步流程控制的全部过程。本篇文章希望能够帮助前端开发者理解异步流程控制的重要性,并掌握使用 co-express 库解决异步流程控制问题的技能。

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