为什么第二个函数不运行,在这个 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()
。
相关文章:
- esri javascript异步打印
- JavaScript异步问题
- Javascript异步成功函数-互斥
- 如何使用javascript异步更新我的内容
- 任何控制Javascript异步加载顺序的方法
- 循环内部的Javascript异步调用
- JavaScript:异步函数
- Javascript异步AJAX和递归排序
- 了解Javascript异步调用
- Javascript异步/等待ajax调用
- javascript异步和twitter的问题
- Javascript 异步用于复杂计算,但不是 ajax 调用
- JavaScript 异步编程:承诺与生成器
- JavaScript 异步循环不返回结果
- Javascript异步函数组合
- Javascript 异步返回
- 添加此 JavaScript 异步调整
- for 循环中的 JavaScript 异步调用
- 这种不规则行为是由Javascript异步运行引起的吗?
- Javascript - 异步函数完成后下一行如何等待执行