首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >queue.js是如何工作的?

queue.js是如何工作的?
EN

Stack Overflow用户
提问于 2012-12-23 13:31:29
回答 2查看 4.2K关注 0票数 5

我一直在尝试了解Mike Bostock's queue.js是如何工作的,但我不明白它是如何工作的。我不理解的部分是代码是如何管理继续执行回调的。特别是,我不确定pop()方法(第45行)。据我所知,该方法获取下一个未处理的延迟函数;附加一个回调,该回调(可能)启动队列中的下一个延迟函数,并在立即弹出的函数结束时执行;最后执行该函数。我的问题是:什么代码执行这个回调?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-24 03:42:30

每个延迟函数实际上并不返回任何东西--它们应该以回调的形式执行它们的最后一个参数。例如,这将不起作用。

代码语言:javascript
复制
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

但是,如果我们将foo修改为接受回调,

代码语言:javascript
复制
var foo = function(i, callback) {
  console.log(i);
  callback(null, i);  // first argument is error reason, second is result
}

然后它会继续,因为执行回调会导致queue继续。

票数 10
EN

Stack Overflow用户

发布于 2012-12-23 14:46:33

如果我正确理解了代码,queue.await()queue.awaitall()将回调放在await实例变量中,然后由notify()执行此操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14008868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档