javascript - 执行超时功能后是否有可能注入(inject)任何东西

标签 javascript asynchronous settimeout

比如我们有这样的代码,

    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/

相关文章:

javascript - 计时器和 onChange

javascript - 将正确的 "this"上下文传递给 setTimeout 回调?

javascript - 将字符串传递给 settimeout 是不好的做法吗?如果是,为什么?

php - 使用 Javascript 和 PHP 将数据从 NCBI 数据库传输到另一个站点

javascript - Hapijs 、 fs.readfile 、 fs.writefile 和 childprocess.exec 如何控制异步?

javascript - 如何在文本框(用户、密码等)中缩进文本和光标的起始位置

c# - 实现即发即忘异步方法调用的正确方法

ios - 如何异步发送和接收来自外部配件的数据

javascript - 传递 Prop 给 child 丢失 Prop

javascript - 如何在页面上拥有多组评分