【问题标题】:force a javascript timeout function to execute immediately强制 javascript 超时函数立即执行
【发布时间】:2013-10-23 14:07:11
【问题描述】:

如果我在 javascript 中设置了超时

var myTimeoutId = setTimeout( function(){
    ... do some stuff ....
}, 15000);

另一个事件让我需要立即执行超时,有没有办法可以使用存储的 id 来执行函数?我知道我可以存储对该函数的引用,在myTimeoutId 上调用clearTimeout,然后直接调用该函数,但其​​中涉及大量的簿记。

有没有类似 executeNow( myTimeoutId ) 的函数?

【问题讨论】:

    标签: javascript timeout


    【解决方案1】:

    在 nodejs 中:

    const timeout = setTimeout(() => {
      console.log("timeout function");
    }, 10000);
    
    // execute timeout function
    timeout._onTimeout();
    clearTimeout(timeout);
    

    【讨论】:

      【解决方案2】:

      没有。您需要单独创建该函数,以便可以从任何地方调用它:

      function fn (){
          // ... do some stuff ....
      }
      
      var myTimeoutId = setTimeout( fn, 15000);
      
      // one possibility
      function other () {
          clearTimeout(myTimeoutId);
          fn();
      }
      

      【讨论】: