承诺被拒绝后,代码仍然执行

时间:2020-08-04 23:22:07

标签: javascript

我有以下代码:

function promise3() {
    return new Promise((resolve, reject) => {
        function1().then(() => {
            resolve();
        }).catch(err => {
            reject(err);
            console.log("after error");
        });  
    })
} 

promise3().catch(e => {
    console.log(e);
});

function1返回一个承诺。但是当function1失败并返回错误时。我在错误的console.log之前看到console.log("after error")。尽管reject之后的代码无法运行。 reject就像一个回报。那么这是怎么回事?

1 个答案:

答案 0 :(得分:-1)

如果您不想在解决/拒绝后执行任何操作,则需要按以下步骤返回它们。

 function promise3() {
        return new Promise((resolve, reject) => {
            function1().then(() => (
                resolve(); //change the brackets to () instead of {}
            )).catch(err => {
                return reject(err); //put a return keyword in front
                console.log("after error");
            });  
        })
    } 
    
    
    promise3().catch(e => {
        console.log(e);
    });
   

():表示您要返回里面的东西。
{}:表示您需要执行以下任务,如果没有return语句,则什么也不返回。