是否有一个通用的机制来超时node.js中的事件?

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

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

对于我来说,超时的理想程序stream程与具有例外的程序stream程相似。 如果某个事件在某个预定义的超时限制内没有发生,那么事件监听器将被从事件循环中清除,并产生一个超时事件。 这个超时事件将有一个替代的监听器。 如果事件处理正常,则从事件循环中清除超时侦听器和事件侦听器。

有超时处理和清理超时过程的一般机制吗? 我知道一些types,如套接字有超时参数,但它不是一个适用于所有事件的一般机制。

目前没有这样的东西(我知道,但是我什么都不知道)。

我能想到的唯一的事情就是你自己重置它。 我已经在下面给出了一个例子,但我认为它可能有一些范围问题。 应该可以解决。

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)