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