繁体   English   中英

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

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

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM