【问题标题】:setTimeout not working with Monq in Node.jssetTimeout 不适用于 Node.js 中的 Monq
【发布时间】:2015-12-12 05:27:54
【问题描述】:

尝试使用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()
}

【问题讨论】:

标签: javascript node.js settimeout


【解决方案1】:

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

用途:

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

此外,这里的 try/catch 块有些多余,因为对 setTimeout 的调用不会引发异常。相反,您需要在 foo 中处理它。

【讨论】:

  • 谢谢!如果将 try/catch 框移到 setTimeout 内,但移到 foo 之外,它也会起作用吗?
  • 是的,可以的。
猜你喜欢
  • 2015-07-02
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多