【问题标题】:codes still execute after promise reject [duplicate]承诺拒绝后代码仍然执行[重复]
【发布时间】:2020-11-25 02:35:52
【问题描述】:

我有以下代码:

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 就像一个回报。那么这里发生了什么?

【问题讨论】:

  • 当然可以? reject() 只是一个函数调用,除此之外它不会做任何事情。如果您希望代码执行在您触发解析或拒绝时结束,return 他们立即终止承诺功能。

标签: javascript


【解决方案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语句,则什么都不返回。

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 2018-07-20
    • 2019-05-21
    • 2021-12-22
    • 1970-01-01
    • 2021-06-29
    • 2016-03-11
    • 2019-11-02
    相关资源
    最近更新 更多