返回博主主页

如何捕获promise reject

 


不使用await,promise当rej时try/catch兜不住。

一、

var p1= new Promise().then();

1)使用await:await new Promise();

结论:三种 异常都行

async function f1() {

    try {
        var p1 =  await new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        ).then(data=>{
            console.log('data::', data);
        }
        , err=>{  //
            console.log('err::', err)
        }
        ).catch(res=>{  //
            console.log('catch data::', res)
        }
        )

    } catch (err) { //
        console.log("12345")
    }
}

 

 

 

2)不使用await

结论:必须有①②任何一个,③兜不住。

 

async function f2() {

    try {
        var p1 =  new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        ).then(data=>{
            console.log('data::', data);
        }
        // , err=>{  // ①
        //     console.log('err::', err)
        // }
        // ).catch(res=>{  // ②
        //     console.log('catch data::', res)
        // }
        )

    } catch (err) { //
        console.log("12345")
    }
}

 

 

二、

var p1= new Promise();

p1.then

1)使用await:await new Promise().then();

不会进入①②, 必须有③

 

async function f3() {

    try {
        var p1 = await new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        )
        p1.then(data=>{
            console.log('data::', data);
        }
        , err=>{  //
            console.log('err::', err)
        }
        ).catch(res=>{  //
            console.log('catch data::', res)
        }
        )

    } catch (err) { //
        console.log("12345")
    }
}

 

 

 

2)不使用await

①②都行,③兜不住。

兜不住,因为都是因为没有使用await

 

async function f4() {

    try {
        var p1 = new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        )
        p1.then(data=>{
            console.log('data::', data);
        }
        , err=>{  //
            console.log('err::', err)
        }
        ).catch(res=>{  //
            console.log('catch data::', res)
        }
        )

    } catch (err) { // ③ 兜不住
        console.log("12345")
    }
}

console.clear()
f3()

 

 

完整:

// 一、
// var p1= new Promise().then();
// 1)使用await:await new Promise();
// 结论:三种 异常都行

// 2)不使用await
// 结论:必须有①②任何一个,③兜不住。

// 二、
// var p1= new Promise();
// p1.then
// 1)使用await:await new Promise().then();
// 不会进入①②, 必须有③

// 2)不使用await
// ①②都行,③兜不住。

// 兜不住,因为都是因为没有使用await


async function f1() {

    try {
        var p1 =  await new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        ).then(data=>{
            console.log('data::', data);
        }
        , err=>{  //
            console.log('err::', err)
        }
        ).catch(res=>{  //
            console.log('catch data::', res)
        }
        )

    } catch (err) { //
        console.log("12345")
    }
}

async function f2() {

    try {
        var p1 =  new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        ).then(data=>{
            console.log('data::', data);
        }
        // , err=>{  // ①
        //     console.log('err::', err)
        // }
        // ).catch(res=>{  // ②
        //     console.log('catch data::', res)
        // }
        )

    } catch (err) { //
        console.log("12345")
    }
}



async function f3() {

    try {
        var p1 = await new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        )
        p1.then(data=>{
            console.log('data::', data);
        }
        , err=>{  //
            console.log('err::', err)
        }
        ).catch(res=>{  //
            console.log('catch data::', res)
        }
        )

    } catch (err) { //
        console.log("12345")
    }
}


async function f4() {

    try {
        var p1 = new Promise((resolve,rej)=>{
            console.log('没有resolve')
            rej('失败了')

        }
        // )
        // // p1.then(data=>{
        //     console.log('data::', data);
        // }
        // , err=>{  // ①
        //     console.log('err::', err)
        // }
        // ).catch(res=>{  // ②
        //     console.log('catch data::', res)
        // }
        )

    } catch (err) { // ③ 兜不住
        console.log("12345")
    }
}

console.clear()
f4()

 

posted @ 2022-03-18 15:46  懒惰的星期六  阅读(508)  评论(0编辑  收藏  举报

Welcome to here

主页