深入浅析Nodejs中的“洋葱模型”


当前第2页 返回上一页

4.png

可以看出,从外向内的是正常的,一层层往里进行调用,从内向外时则发生了一些变化,最主要的原因是异步中间件并没有按照顺序输出执行结果

(2)Koa保持上面的代码顺序,只将对应的express语法改成koa语法,其中中间件1和异步中间件代码部分如下示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

const Koa = require('koa');

const app = new Koa();

/**

 * 中间件 1

 */

app.use(async (ctx, next) => {

    console.log('first');

    await next();

    console.log('first end');

});

/**

 * 异步中间件

 */

app.use(async (ctx, next) => {

    console.log('async');

    await next();

    await new Promise(

        (resolve) =>

            setTimeout(

                () => {

                    console.log(`wait 1000 ms end`);

                    resolve()

                },

            1000

        )

    );

    console.log('async end');

});

重新运行,最终输出结果为:

5.png

你会发现,KOA 严格按照了洋葱模型的执行,从上到下,也就是从洋葱的内部向外部,输出 first、second、async、third;接下来从内向外输出 third end、async end、second end、first end。

更多编程相关知识,请访问:编程教学!!

以上就是深入浅析Nodejs中的“洋葱模型”的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

一文快速了解nodejs中crypto模块的用法

深入浅析nodejs里的koa-static中间件

谈谈使用nodejs增删改查本地json文件的方法

nodejs中使用string_decoder模块将buffer转成string

详解nodejs中的阻塞和非阻塞

nodejs设置node_env时发生错误怎么解决?

初步了解nodejs中的异步i/o

深入浅析nodejs中的事件和事件循环

详解nodejs+nest实现的短链接服务

node.js访问sql数据库的方法

更多相关阅读请进入《nodejs》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...