引子
众所周知,虽然Node的底层有一个IO线程池,但其应用层默认是单线程运行的,对于多核CPU环境来说,是一种资源的浪费。
所幸Node提供了child_process 模块,让开发者得以开多个进程,实现每个进程各自利用一个CPU,以实现多核的利用。
child_process 模块[……]
There are 26 posts filed in JavaScript (this is page 3 of 3).
众所周知,虽然Node的底层有一个IO线程池,但其应用层默认是单线程运行的,对于多核CPU环境来说,是一种资源的浪费。
所幸Node提供了child_process 模块,让开发者得以开多个进程,实现每个进程各自利用一个CPU,以实现多核的利用。
child_process 模块[……]
在研究恶魔金字塔(Pyramid of Doom)的过程中,注意到 async 有这样的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
async.series([ function(callback){ // do some stuff ... callback(null, 'one'); }, function(callback){ // do some more stuff ... callback(null, 'two'); } ], // optional callback function(err, results){ // results is now equal to ['one', 'two'] }); |
令人寻味的是这个回调函数callback。它不是调用者写的,而是由series()通过高阶函数的方式注入的。怎么注入的?答[……]
接上篇,要在JavaScript异步环境中支持串行化执行,尝试参考了 CommonJS的Promise标准 后,决定使用没有状态的Promise 方式来实现。
严格说来,Promise标准应该包括:
在学Node的时候,遇到了一个关于回调的问题:
有若干个进行资源调用的函数(比如它们共享一个mongoDB的连接),要确保在它们都执行完成后,执行一个资源销毁的函数,怎么做比较好?
Node提供的是一个纯异步的执行环境,决定了至少这样的代码是行不通的:
[crayon-67406c96[……]