duc*_*thd 5 javascript queue asynchronous
我一直试图理解Mike Bostock的queue.js是如何工作的,但我看不出它是如何运作的.我不明白的部分是代码如何设法继续执行回调.特别是,我不确定该pop()方法(第45行).根据我的理解,该方法采用下一个未处理的延迟函数; 附加一个回调(可能)启动队列中的下一个延迟函数,并在立即弹出的函数完成时执行; 然后最后执行所述功能.我的问题是:什么代码执行此回调?
duc*_*thd 10
每个延迟函数实际上都不会返回任何内容 - 它们应该作为回调执行它们的最终参数.例如,这不起作用
var foo = function(i) {
console.log(i);
return i;
}
var finished = function(error, results) {
console.log(results);
}
queue(2)
.defer(foo, 1)
.defer(foo, 2)
.defer(foo, 3)
.defer(foo, 4)
.awaitAll(finished); // only prints "1" and "2", since foo() doesn't execute callbacks
Run Code Online (Sandbox Code Playgroud)
但是,如果我们修改foo以进行回调,
var foo = function(i, callback) {
console.log(i);
callback(null, i); // first argument is error reason, second is result
}
Run Code Online (Sandbox Code Playgroud)
然后它将执行回调导致queue继续.
| 归档时间: |
|
| 查看次数: |
4180 次 |
| 最近记录: |