【发布时间】:2014-09-26 09:13:42
【问题描述】:
我需要从不同的上下文多次调用一个函数,但我需要在上一次调用开始后的一秒之前触发每个调用。
我举个例子:
var i = 0;
while(i<50) {
do_something(i)
i++
}
function do_something(a) {
console.log(a)
}
我想要这个日志: '1',然后在第二个'2'之后,然后在第二个'3'之后,然后在第二个'4'之后......
我不能使用简单的 setInterval 或 setTimeout,因为这个函数 'do_something(param)' 可以在同一时刻从不同的来源调用,因为我正在使用 nodejs 中的异步函数。 我希望保持调用的顺序,但它们会以一秒的最小延迟触发。
我想我应该将这些调用添加到一个队列中,然后每一秒都会有一个调用出列并且函数会触发,但我真的不知道如何在 nodejs 中执行此操作。提前谢谢你
【问题讨论】:
-
“异步”第 3 方模块有一个很好的队列实现作为其中的一部分。
-
为什么不能使用
setInterval()仍然没有任何意义。这正是它的用途。 -
嗨 Morrisda,您需要了解 NodeJS 中的闭包。请阅读howtonode.org/why-use-closure。那里有一些很好的例子,说明您尝试使用 setTimeout 尝试什么
-
解决了我的问题,谢谢大家
-
@Morrisda - 如果您自己解决了问题,那么您应该发布自己问题的答案(然后您可以接受)或删除您的问题,以便结束本主题。
标签: javascript node.js events queue timing