Node.js 异步程序运行结果及分析

源程序见: https://www.cnblogs.com/fitmap/p/16915027.html

运行结果:

2022-11-23T04:31:34.585Z Start main
2022-11-23T04:31:34.587Z Start prepare
2022-11-23T04:31:34.588Z Start promise every_0
2022-11-23T04:31:34.588Z Stop promise every_0 0.1081ms
2022-11-23T04:31:34.588Z Start promise every_1
2022-11-23T04:31:34.588Z Stop promise every_1 0.0046ms
2022-11-23T04:31:34.588Z Start promise every_2
2022-11-23T04:31:34.588Z Stop promise every_2 0.005ms
2022-11-23T04:31:34.588Z Start promise every_3
2022-11-23T04:31:34.588Z Stop promise every_3 0.007ms
2022-11-23T04:31:34.588Z Start promise every_4
2022-11-23T04:31:34.588Z Stop promise every_4 0.0069ms
2022-11-23T04:31:34.588Z Start promise every_5
2022-11-23T04:31:34.588Z Stop promise every_5 0.006ms
2022-11-23T04:31:34.589Z Start promise every_6
2022-11-23T04:31:34.589Z Stop promise every_6 0.0094ms
2022-11-23T04:31:34.589Z Start promise every_7
2022-11-23T04:31:34.589Z Stop promise every_7 0.0065ms
2022-11-23T04:31:34.589Z Start promise every_8
2022-11-23T04:31:34.589Z Stop promise every_8 0.0067ms
2022-11-23T04:31:34.589Z Start promise every_9
2022-11-23T04:31:34.589Z Stop promise every_9 0.0073ms
2022-11-23T04:31:34.589Z Stop prepare 1.7875ms
2022-11-23T04:31:34.589Z Start promise every
2022-11-23T04:31:34.589Z Start every
2022-11-23T04:31:34.590Z Start await every_0
2022-11-23T04:31:34.590Z Stop promise every 0.2913ms
2022-11-23T04:31:34.590Z Start prepare
2022-11-23T04:31:34.590Z Start promise unify_0
2022-11-23T04:31:34.590Z Stop promise unify_0 0.003ms
2022-11-23T04:31:34.590Z Start promise unify_1
2022-11-23T04:31:34.590Z Stop promise unify_1 0.0052ms
2022-11-23T04:31:34.590Z Start promise unify_2
2022-11-23T04:31:34.590Z Stop promise unify_2 0.0024ms
2022-11-23T04:31:34.590Z Start promise unify_3
2022-11-23T04:31:34.590Z Stop promise unify_3 0.0043ms
2022-11-23T04:31:34.590Z Start promise unify_4
2022-11-23T04:31:34.590Z Stop promise unify_4 0.0021ms
2022-11-23T04:31:34.590Z Start promise unify_5
2022-11-23T04:31:34.590Z Stop promise unify_5 0.0021ms
2022-11-23T04:31:34.590Z Start promise unify_6
2022-11-23T04:31:34.590Z Stop promise unify_6 0.0024ms
2022-11-23T04:31:34.590Z Start promise unify_7
2022-11-23T04:31:34.590Z Stop promise unify_7 0.0058ms
2022-11-23T04:31:34.590Z Start promise unify_8
2022-11-23T04:31:34.590Z Stop promise unify_8 0.0033ms
2022-11-23T04:31:34.590Z Start promise unify_9
2022-11-23T04:31:34.590Z Stop promise unify_9 0.0028ms
2022-11-23T04:31:34.591Z Stop prepare 0.7224ms
2022-11-23T04:31:34.591Z Start promise unify
2022-11-23T04:31:34.591Z Start await unify
2022-11-23T04:31:34.591Z Stop promise unify 0.2364ms
2022-11-23T04:31:34.591Z Start await dual
2022-11-23T04:31:34.591Z Start busy_every_0
2022-11-23T04:31:34.601Z Stop busy_every_0 9.625ms result=3640
2022-11-23T04:31:34.601Z Start busy_every_1
2022-11-23T04:31:34.611Z Stop busy_every_1 9.5085ms result=3671
2022-11-23T04:31:34.622Z Start busy_every_2
2022-11-23T04:31:34.626Z Stop busy_every_2 4.4955ms result=3727
2022-11-23T04:31:34.626Z Start busy_every_3
2022-11-23T04:31:34.631Z Stop busy_every_3 4.7724ms result=3648
2022-11-23T04:31:34.631Z Start busy_every_4
2022-11-23T04:31:34.636Z Stop busy_every_4 4.308ms result=3630
2022-11-23T04:31:34.636Z Start busy_every_5
2022-11-23T04:31:34.640Z Stop busy_every_5 4.5287ms result=3685
2022-11-23T04:31:34.640Z Start busy_every_6
2022-11-23T04:31:34.645Z Stop busy_every_6 4.6387ms result=3635
2022-11-23T04:31:34.645Z Start busy_every_7
2022-11-23T04:31:34.650Z Stop busy_every_7 4.4062ms result=3709
2022-11-23T04:31:34.650Z Start busy_every_8
2022-11-23T04:31:34.654Z Stop busy_every_8 4.4432ms result=3631
2022-11-23T04:31:34.654Z Start busy_every_9
2022-11-23T04:31:34.659Z Stop busy_every_9 4.4607ms result=3672
2022-11-23T04:31:34.659Z Start busy_unify_0
2022-11-23T04:31:34.663Z Stop busy_unify_0 4.3889ms result=3659
2022-11-23T04:31:34.663Z Start busy_unify_1
2022-11-23T04:31:34.668Z Stop busy_unify_1 4.4345ms result=3653
2022-11-23T04:31:34.668Z Start busy_unify_2
2022-11-23T04:31:34.672Z Stop busy_unify_2 4.2633ms result=3678
2022-11-23T04:31:34.672Z Start busy_unify_3
2022-11-23T04:31:34.676Z Stop busy_unify_3 4.2879ms result=3661
2022-11-23T04:31:34.677Z Start busy_unify_4
2022-11-23T04:31:34.681Z Stop busy_unify_4 4.5395ms result=3711
2022-11-23T04:31:34.681Z Start busy_unify_5
2022-11-23T04:31:34.685Z Stop busy_unify_5 4.2544ms result=3678
2022-11-23T04:31:34.686Z Start busy_unify_6
2022-11-23T04:31:34.690Z Stop busy_unify_6 4.5597ms result=3629
2022-11-23T04:31:34.690Z Start busy_unify_7
2022-11-23T04:31:34.695Z Stop busy_unify_7 4.4127ms result=3668
2022-11-23T04:31:34.695Z Start busy_unify_8
2022-11-23T04:31:34.699Z Stop busy_unify_8 4.1855ms result=3696
2022-11-23T04:31:34.699Z Start busy_unify_9
2022-11-23T04:31:34.703Z Stop busy_unify_9 4.1892ms result=3656
2022-11-23T04:31:34.703Z Stop await every_0 113.5922ms
2022-11-23T04:31:34.703Z Start await every_1
2022-11-23T04:31:34.703Z Stop await every_1 0.0166ms
2022-11-23T04:31:34.703Z Start await every_2
2022-11-23T04:31:34.703Z Stop await unify 112.5226ms result=3659,3653,3678,3661,3711,3678,3629,3668,3696,3656
2022-11-23T04:31:34.703Z Stop await every_2 0.0419ms
2022-11-23T04:31:34.703Z Start await every_3
2022-11-23T04:31:34.703Z Stop await every_3 0.0033ms
2022-11-23T04:31:34.703Z Start await every_4
2022-11-23T04:31:34.703Z Stop await every_4 0.0027ms
2022-11-23T04:31:34.703Z Start await every_5
2022-11-23T04:31:34.704Z Stop await every_5 0.0026ms
2022-11-23T04:31:34.704Z Start await every_6
2022-11-23T04:31:34.704Z Stop await every_6 0.0024ms
2022-11-23T04:31:34.704Z Start await every_7
2022-11-23T04:31:34.704Z Stop await every_7 0.0023ms
2022-11-23T04:31:34.704Z Start await every_8
2022-11-23T04:31:34.704Z Stop await every_8 0.0028ms
2022-11-23T04:31:34.704Z Start await every_9
2022-11-23T04:31:34.704Z Stop await every_9 0.0024ms
2022-11-23T04:31:34.704Z Stop every 114.2191ms result=3640,3671,3727,3648,3630,3685,3635,3709,3631,3672
2022-11-23T04:31:34.704Z Stop await dual 112.8971ms
2022-11-23T04:31:34.704Z every_a=3640,3671,3727,3648,3630,3685,3635,3709,3631,3672
2022-11-23T04:31:34.704Z unify_a=3659,3653,3678,3661,3711,3678,3629,3668,3696,3656
2022-11-23T04:31:34.704Z Stop main 116.4418ms

分析:

共提交22份承诺:every_0~9,unify_0~9, every,unify。
共等待12份兑现:every_0~9,unify(合并了0~9),dual(合并了every和unify)。
这些异步承诺按提交的顺序逐个执行, 合并等待承诺兑现能较早完成。
本质上,main也是一个承诺,它在程序最后一句被提交后,系统空闲,因此被逐句执行。

 
posted @ 2022-11-23 10:21  飞麦  阅读(60)  评论(0编辑  收藏  举报