繁体   English   中英

如何手动清理自调用函数创建的调用堆栈

[英]How to manually clean the call stack created by Self invoking function

(()=>{
    setTimeout(() => {
        // some function
    },3000);
})();

上面的代码在 for 循环内运行,我想要的是我应该能够阻止在超时发生时执行的setTimeout调用堆栈的执行,并且应该能够清除它。

我假设您以这种方式执行了 IIFE,并且您想清除从 for 循环内部发出的超时:

 for(let i=0; i< 4; i++){ (()=>{ setTimeout(() => { console.log("done"); },3000); })(); }

在这种情况下, setTimeout()返回一个id ,您可以使用它清除发出的超时:

 const arr = [] for(let i=0; i< 4; i++){ (()=>{ let id = setTimeout(() => { console.log("done"); },3000); arr.push(id); })(); } arr.forEach((id)=>clearTimeout(id)); //done not printed in console as timeout was cancelled

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM