在尝试使用setTimeout
对monq
工作人员执行速率限制时,为什么工作人员不受限制?
worker
在执行setTimeout()
之前不等待10秒。为什么会这样,我们如何才能将呼叫延迟到foo()
?
var monq = require('monq')
var client = monq('localhost/mydb')
var worker = client.worker(['general'])
worker.register({
test: function(params, callback) {
try {
setTimeout(foo(params, callback), 10000)
} catch(err) {
callback(err)
}
}
})
foo = function(params, callback) {
console.log('Hello world')
callback()
}
答案 0 :(得分:3)
因为setTimeout
需要函数引用。相反,您正在执行该功能并将结果传递给setTimeout
。
使用:
setTimeout(function() {
foo(params, callback);
}, 10000);
此外,try / catch块在某种程度上是多余的,因为对setTimeout
的调用不会抛出异常。相反,您需要在foo
内处理它。