比如我们有这样的代码,
let a = 0;
setTimeout(()=>{a++},0);
console.log(a);
据我了解,超时回调中的所有内容都将在所有调用堆栈函数执行后执行,只有到那时 timeoutCallback 才会从“队列”进入执行堆栈。
我的问题: 是否有可能在执行超时函数后注入(inject)任何东西并从超时回调中获得结果? (无需等待所有执行堆栈清空)
是这样的:
let a = 0;
setTimeout(()=>{a++},0);
console.log(a); // 0
//some mystery things happened
console.log(a); // 1
最佳答案
一旦代码被发送到那里,您就无法从超时队列中取回代码。相反,将代码移动到处理函数中并将其发送到超时队列。然后您可以将 setTimeout 保存为一个变量,稍后您可以在超时触发之前取消超时并立即运行该函数。
let a = 0
function timeoutHandler() {
a++
console.log("Counted to " + a)
}
var timeout = setTimeout(timeoutHandler,10000)
clearTimeout(timeout)
timeoutHandler()
关于javascript - 执行超时功能后是否有可能注入(inject)任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648429/