javascript - 为什么 Node.js 使用 try/catch 时会收到针对我的代码的附加错误消息?

标签 javascript node.js promise

我在异步函数内部使用了 try/catch block ,但 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

我做错了什么?

最佳答案

您需要如下更新代码:您没有处理被拒绝的 promise ,因为 .then 返回新的 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}`));

关于javascript - 为什么 Node.js 使用 try/catch 时会收到针对我的代码的附加错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689817/

相关文章:

node.js - 远程服务器的socket.io主机名

node.js - 如何从 Node 内创建 ubuntu 用户

javascript - 负载过大时 typescript 异步功能不起作用

javascript - grunt 服务 :dist, 时找不到 Angular.js 模块,但 grunt 服务工作正常

IF 语句中的 JavaScript % 运算符

node.js - DynamoDB attribute_exists 不起作用

javascript - 如何创建一个返回现有 promise 而不是新 promise 的函数?

javascript - 获取 jquery slider 内容以保持可见,直到鼠标移出(新内容)

javascript - 你如何用 Javascript 编写类?

node.js - 完全迷失了 promise async/await