Javascript 为什么我在使用try/catch的代码中会收到Node.js的额外错误消息?
我在异步函数中使用了try/catch块,但Node.js会显示一些额外的错误消息。我的代码:Javascript 为什么我在使用try/catch的代码中会收到Node.js的额外错误消息?,javascript,node.js,promise,Javascript,Node.js,Promise,我在异步函数中使用了try/catch块,但Node.js会显示一些额外的错误消息。我的代码: const work = count => { const promise = new Promise((resolve,reject) => { const interval = setInterval(() => { console.log(count--); if(!count){
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}`));
结果:
我做错了什么?您需要像下面这样更新代码:您没有将被拒绝的承诺处理为
。然后
返回新的承诺,在您的情况下,它是错误的承诺
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}`));
您需要像下面这样更新代码:您没有将拒绝的承诺处理为
。然后
返回新的承诺,该承诺在您的案例中是错误的承诺
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}`));
您没有处理此处返回的潜在错误
代码>(提示:。然后
返回一个新的承诺)@George是的,谢谢!所以@George-那将是一个复制品:p@Bravo这就是当你把VTC当作一个复制品时,SO生成的注释啊,OK@George-:py你没有处理这里返回的潜在错误。(context=>console.log(`Ressult:${context}`)代码>(提示:。然后
返回一个新的承诺)@George是的,谢谢!所以@George-那将是一个复制品:p@Bravo这就是当你把职业训练局当作一个复制品时所产生的评论啊,OK@George-:p