亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

鏈式promise函數中,如何判斷是哪個promise拋出的錯誤

鏈式promise函數中,如何判斷是哪個promise拋出的錯誤

Helenr 2019-03-13 19:14:31
我需要實現在一個鏈式promise函數中,中間的任何一個函數錯誤則程序終止,并且能捕獲到出錯函數,然后根據不同的出錯函數執行不同的操作。如下代碼則該如何改進?請勿在error對象中帶信息function f1(){    return new Promise((resolve,reject) =>{        setTimeout(() =>{            reject("err");        },1000)    })}function f2(){    return new Promise((resolve,reject) =>{        setTimeout(() =>{            reject("err");        },1000)    })}function f3(){    return new Promise((resolve,reject) =>{        setTimeout(() =>{            reject("err");        },1000)    })}const foo = () =>{    return f1().then(() =>{        return f2();    }).then(() =>{        return f3();    }).catch(err =>{        // 如何判斷這個錯誤是哪個函數拋出的??        return err;    })} foo();假如是每一個函數都是向后端發送異步請求,而后端返回的數據格式一定是固定的,也就是說我們不能根據后端返回的數據去判斷是哪個函數拋出了錯誤。該怎么辦??謝謝各位幫忙!
查看完整描述

3 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

reject里放有用的信息啊 下一步做什么可以放到reject里


查看完整回答
反對 回復 2019-03-23
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

function f1(){

    return new Promise((resolve,reject) =>{

        setTimeout(() =>{

            reject("err1");

        },1000)

    })

}


function f2(){

    return new Promise((resolve,reject) =>{

        setTimeout(() =>{

            reject("err2");

        },1000)

    })

}


function f3(){

    return new Promise((resolve,reject) =>{

        setTimeout(() =>{

            reject("err3");

        },1000)

    })

}


const foo = () =>{

    return f1().then(() =>{

        return f2();

    }).then(() =>{

        return f3();

    }).catch(err =>{

        // 如何判斷這個錯誤是哪個函數拋出的??

        console.log(err);

        return err;

    })


foo();


查看完整回答
反對 回復 2019-03-23
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

兩種方法吧


1 reject拋出的Error對象帶有信息


function f1(){

    return new Promise((resolve,reject) =>{

        setTimeout(() =>{

            reject(new Error("f1 err"));

        },1000)

    })

}

2 在每一個then方法的第二個參數函數里輸出錯誤信息


f1().then(() =>{

    return f2();

},()=>{

    throw Error("f1 err");

})


查看完整回答
反對 回復 2019-03-23
  • 3 回答
  • 0 關注
  • 845 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號