• 如何捕获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()
  • 相关阅读:
    剑指offer(链表)
    设计模式
    谷歌Colab使用(深度学习)
    Consul与python API注册与注销
    【日志收集】之Loki
    【消息队列】之 RabbitMQ安装
    【消息队列】之NSQ安装
    Docker基础
    Python3 , Mysql5.7 , Smb 安装
    SkyWalking部署
  • 原文地址:https://www.cnblogs.com/sunupo/p/16022105.html
Copyright © 2020-2023  润新知