在Node.js中,setTimeout不能与Monq一起工作

在尝试使用setTimeoutmonq 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里面处理它。