Javascript 捕获从setInterval内部抛出的异常
捕获从Javascript 捕获从setInterval内部抛出的异常,javascript,node.js,exception,try-catch,Javascript,Node.js,Exception,Try Catch,捕获从setInterval内部抛出的错误的最佳方法是什么?当前,从下面的代码中,在抛出异常时,控件未到达catch try { timer = setInterval(() => { if (moment().diff(lastProcessTime, 'minute') >= 2) { // Taking too long! clearInterval(timer);
setInterval
内部抛出的错误的最佳方法是什么?当前,从下面的代码中,在抛出异常时,控件未到达catch
try {
timer = setInterval(() => {
if (moment().diff(lastProcessTime, 'minute') >= 2) {
// Taking too long!
clearInterval(timer);
throw new Error({ code: -1, message: `Taking too long to response:: ${urls[0]}` });
}
}, 1000);
await c.downloadAndSaveDataFromRssUrls(configs, urls);
clearInterval(timer);
return Promise.resolve();
} catch (err) {
clearInterval(timer);
console.log(err);
return Promise.resolve();
}
您需要将
try catch
移动到setInterval
:
try {
timer = setInterval(() => {
if (moment().diff(lastProcessTime, 'minute') >= 2) {
// Taking too long!
clearInterval(timer);
throw new Error({ code: -1, message: `Taking too long to response:: ${urls[0]}` });
}
}, 1000);
await c.downloadAndSaveDataFromRssUrls(configs, urls);
clearInterval(timer);
return Promise.resolve();
} catch (err) {
clearInterval(timer);
console.log(err);
return Promise.resolve();
}
函数{
设i=setInterval(()=>{
试一试{
if(Math.random()*100>5){
间隔时间(i);
抛出新错误(“数字大于5”);
}
}捕捉(错误){
console.log('Hello')
控制台日志(err);
}
}, 1000);
}
问候()代码>不捕获异步回调异常的可能重复项。超时时不使用setInterval
。您不能在承诺中使用setInterval
。请看一看如何超时您的下载和savedatafromssurls
调用。@Bergi这很有帮助这对我的情况没有帮助。更新有问题的代码。没有任何更改,您仍然可以在setInterval
中添加一个try-catch
。我想从setInterval抛出一个异常并从外部try-catch返回。这可能吗?不可能,因为setInterval
是异步的。