为什么第二个函数不运行,在这个 javascript 的异步示例中

Why doesn't the 2rd function run, in this javascript's async example?

本文关键字:javascript 异步 函数 第二个 运行 为什么      更新时间:2023-09-26
var async = require('async');
function f1() {
    setTimeout(function(){ console.log('111');},300);
}
function f2() {
    setTimeout(function(){ console.log('222');},100);
}
async.series([f1,f2], function(err, result){
    console.log(result);
});

它打印:

111

没有222?为什么?

f1()f2()应该异步完成,因此在"完成"时会给它们一个回调来调用。 试试这个:

var async = require('async');
function f1(done) {
    setTimeout(function(){ console.log('111'); done(); },300);
}
function f2(done) {
    setTimeout(function(){ console.log('222'); done(); },100);
}
async.series([f1,f2], function(err, result){
    console.log(result);
});

编辑:关于"为什么",这是因为f1()立即被调用,因此您的初始setTimeout()按预期安排。 但是,由于您永远不会告诉async f1()已完成,因此它永远不会调用f2()