Javascript 拒绝承诺后仍执行代码

Javascript 拒绝承诺后仍执行代码,javascript,Javascript,我有以下代码: function promise3() { return new Promise((resolve, reject) => { function1().then(() => { resolve(); }).catch(err => { reject(err); console.log("after error");

我有以下代码:

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
返回承诺。但是当
函数1
失败并返回错误时。我在错误的console.log之前看到了
console.log(“after error”)
。我认为
reject
之后的代码不会运行<代码>拒绝的行为类似于退货。那么这里发生了什么?

如果您不想在“解决/拒绝”之后执行任何操作,则需要按如下方式返回它们

 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);
    });
   
()
:表示您正在返回内部的文件。
{}
:意味着您需要执行以下任务,如果没有返回语句,则不返回任何内容。

当然可以
reject()
只是一个函数调用,除此之外,它什么也不做。如果要在触发resolve或reject时结束代码执行,请返回它们,以立即终止promise函数。避免!