我是nodejs.i的新手.想要连续两个任务.我使用异步模块
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
为什么?
每个函数都是异步的,因此传递回调函数.要使其进入下一步,您需要调用回调.
var async = require('async'); async.series([ function (callback) { console.log("step 1"); callback(); }, function (callback) { console.log('step 2'); callback(); } ]); console.log("end");
请注意,这将做你想要的,但你end
仍然在一个奇怪的地方.系列回调实际上并不是异步的,所以一切都会同步运行.如果它全部以异步方式运行,那么您的结束回调将在某处运行.真的,它应该在最后回调.
例如
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"); });