代码在promise拒绝后仍然执行



我有以下代码:

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的作用类似于返回。那么这里发生了什么?

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

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);
});

():意味着你正在返回里面的东西
{}:表示您需要执行以下任务,如果没有返回语句,则不返回任何内容。

相关内容

最新更新