6

我正在学习 node.js,我能找到的大多数示例都是处理简单示例。我更感兴趣的是构建真实世界的复杂系统,并估计基于事件的 node.js 模型如何处理真实应用程序的所有用例。

我想应用的一种常见模式是,如果在特定超时时间内没有发生阻塞执行,则让其超时。例如,如果执行数据库查询需要超过 30 秒,那么对于某些应用程序来说可能太多了。或者如果读取文件需要超过 10 秒。

对我来说,带有超时的理想程序流类似于带有异常的程序流。如果某个事件未在某个预定义的超时限制内发生,则事件侦听器将从事件循环中清除,并改为生成超时事件。此超时事件将有一个备用侦听器。如果事件处理正常,那么超时监听器和事件监听器都会从事件循环中清除。

是否有用于超时处理和清理超时进程的通用机制?我知道某些类型(例如套接字)具有超时参数,但它不是适用于所有事件的通用机制。

4

1 回答 1

1

目前没有这样的事情(我知道,但我不知道一切)。

我唯一能想到的就是你以某种方式自己重置它。我在下面给出了一个例子,但我认为它可能存在一些范围问题。不过应该可以解决。

var to
function cb() {
    clearTimeout(to)
    // do stuff
}
function cbcb() {
    cb()
}
function cancel() {
    cb = function() {} // notice empty
}
fs.doSomethingAsync(file, cbcb)
to = setTimeout(cancel, 10000)
于 2010-09-28T16:58:22.703 回答