【发布时间】:2019-07-08 21:37:37
【问题描述】:
我正在尝试创建一个超时函数,该函数会在函数挂起时间过长时引发错误。
我有以下代码:
function go() {
try{
console.log('started, timeout in 2 seconds...');
setTimeout(()=>{
throw new Error('Timed Out!');
}, 2000);
while(true){
//will run forever
}
}catch (e) {
console.log('timeout function worked!');
}
}
go();
但是,永远不会抛出错误。我认为这是因为事件循环在 JS 中的工作方式,但我希望我的超时函数在 2 秒后执行,无论发生什么其他事情。我如何做到这一点?
【问题讨论】:
-
这只有在您可以拆分工作或将其移动到工作线程中时才有效,因此浏览器有时间做其他事情 - 比如执行排队的
setTimeout调用
标签: javascript loops events timeout