setTimeout不能与Node.js中的Monq一起使用

时间:2015-12-12 05:27:54

标签: javascript node.js settimeout

在尝试使用setTimeoutmonq工作人员执行速率限制时,为什么工作人员不受限制?

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()
}

1 个答案:

答案 0 :(得分:3)

因为setTimeout需要函数引用。相反,您正在执行该功能并将结果传递给setTimeout

使用:

setTimeout(function() {
    foo(params, callback);
}, 10000);

此外,try / catch块在某种程度上是多余的,因为对setTimeout的调用不会抛出异常。相反,您需要在foo内处理它。