Tom*_*omi 6 javascript events timeout javascript-events node.js
我正在学习node.js,我能找到的大多数例子都是处理简单的例子.我更感兴趣的是构建真实世界的复杂系统,并估计node.js基于事件的模型如何处理实际应用程序的所有用例.
我想要应用的一个常见模式是,如果在某个超时时间内没有发生,则阻止执行超时.例如,如果执行数据库查询需要超过30秒,那么对于某些应用程序来说可能太多了.或者如果读取文件需要10秒以上.
对我来说,具有超时的理想程序流程与具有例外的程序流程类似.如果事件未在某个预定义的超时限制内发生,则事件侦听器将从事件循环中清除,并且将生成超时事件.此超时事件将具有备用侦听器.如果事件处理正常,则从事件循环中清除超时侦听器和事件侦听器.
是否存在超时处理和清理超时进程的一般机制?我知道一些类型,如socket有超时参数,但它不是适用于所有事件的一般机制.
目前还没有这样的事情(据我所知,但我不知道一切)。
我唯一能想到的是你自己以某种方式重置它。我在下面给出了一个例子,但我认为它可能存在一些范围问题。不过应该可以解决。
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)
Run Code Online (Sandbox Code Playgroud)