与asynchronous系列控制stream混淆

我是nodejs.i的新手,我想用两个任务串联。我使用asynchronous模块

var async = require('async'); async.series([ function () { console.log("step 1"); }, function () { console.log('step 2'); }]); console.log("end"); 

我期待的结果是

 step 1 step 2 end 

但结果是

 step 1 end 

为什么?

每个函数都是asynchronous的,所以它传递一个callback。 为了进入下一步,您需要调用callback。

 var async = require('async'); async.series([ function (callback) { console.log("step 1"); callback(); }, function (callback) { console.log('step 2'); callback(); } ]); console.log("end"); 

请注意,这将做你想要的,但你的end仍然是在一个奇怪的地方。 系列callback实际上并不是asynchronous的,所以一切都会同步运行。 如果它全部是asynchronous运行的,那么你的结束callback将会在某个地方运行。 真的,它应该是在最后的callback。

例如

 var async = require('async'); async.series([ function (callback) { console.log("step 1"); setTimeout(callback, 100); }, function (callback) { console.log('step 2'); setTimeout(callback, 100); } ], function(err){ console.log("end"); });