Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 捕获从setInterval内部抛出的异常_Javascript_Node.js_Exception_Try Catch - Fatal编程技术网

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
是异步的。