在Node.js中,setTimeout不能与Monq一起工作
在尝试使用setTimeout
对monq
worker执行速率限制时,为什么worker不被限制?
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() }
因为setTimeout
需要一个函数引用。 相反,您正在执行该函数并将结果传递给setTimeout
。
使用:
setTimeout(function() { foo(params, callback); }, 10000);
此外,try / catch块在那里有点多余,因为对setTimeout
的调用不会抛出exception。 相反,你需要在foo
里面处理它。