【发布时间】:2014-06-10 09:47:00
【问题描述】:
假设我这样做:
var timer = setTimeout(function() {
console.log("will this happen?");
}, 5000);
然后在不到 5 秒后,另一个回调(例如来自 NodeJS 中的网络事件)触发并清除它:
clearTimeout(timer);
是否有可能来自 setTimeout 调用的回调已经在队列中等待执行,如果是这样,clearTimeout 是否会及时停止它?
为了澄清,我说的是 setTimeout 时间实际上到期并且解释器开始执行它的过程,但另一个回调当前正在运行,因此消息被添加到队列中的情况。这似乎是很容易忽略的竞争条件类型之一。
【问题讨论】:
标签: javascript node.js settimeout event-loop