为什么我的try / catch代码会导致Node.js收到其他错误消息?

问题描述 投票:0回答:1

我在异步函数内部使用try / catch块,但Node.js收到一些其他错误消息。我的代码:

const work = count => {
    const promise = new Promise((resolve,reject) => {
        const interval = setInterval(() => {
            console.log(count--);
            if(!count){
                try{
                    clearInterval(interval);
                    throw 'Oops...'; // emulate unexpected error...
                    resolve('Work done!');
                }
                catch(err){
                    reject(err);
                }
            }
        }, 1000);
        console.log('Bingo!');
    });
    return promise;
};

const promise = work(3);
promise.then(context => console.log(`Ressult: ${context}`));
promise.catch(err => console.log(`Error: ${err}`));

结果:

enter image description here

我做错了什么?

javascript node.js promise
1个回答
0
投票

您需要像下面那样更新代码:由于.then返回新的Promise(在您的情况下是错误的Promise,因此您没有处理拒绝的Promise。

    const work = count => {
    const promise = new Promise((resolve,reject) => {
        const interval = setInterval(() => {
            console.log(count--);
            if(!count){
                try{
                    clearInterval(interval);
                    throw 'Oops...'; // emulate unexpected error...
                    resolve('Work done!');
                }
                catch(err){
                    reject(err);
                }
            }
        }, 1000);
        console.log('Bingo!');
    });
    return promise;
};
const promise = work(3);
promise.then(context => console.log(`Ressult: ${context}`)).catch(err => console.log(`Error: ${err}`));
© www.soinside.com 2019 - 2024. All rights reserved.