[英]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.