美文网首页
[2018-07-26] Catch in Async Awai

[2018-07-26] Catch in Async Awai

作者: 超薄智能 | 来源:发表于2018-07-27 00:08 被阅读9次

    这里想测试一下用了try catch之后,aync function返回的Promise的catch是不是多余的呢,写的时候应该怎么写。

    const promise1 = (x)=>{
        return new Promise((resolve,reject)=>{
        resolve(x++);
      });
    };
    
    const promise2 = (x)=>{
        return new Promise((resolve,reject)=>{
        reject(j--);
      });
    };
    
    const asyncPromise = async()=>{
        try{
            let [r1,r2] = await Promise.all([promise1(10), promise2(-10)]);     
            let obj = {
                r1: r1,
                r2: r2
            };  
            
            return obj;
        }
        catch(e){
            console.log(`${e} from catch1`);
            return e;
        };
    };
    
    asyncPromise()
        .then((val)=>{console.log(val)})
        // Only catch the error which not been catched
        // Can catch all the errors ??
        .catch((val)=> console.log(`${val} from catch2`));
    
    

    当一个Promise返回reject之后,
    1)如果async fun中没有写try catch, 会传到最外层async Promise的catch中;
    2)如果都写了catch,最外层的catch会处理 async fun 中catch里有可能存在的error。

    所以写的时候,async fun中try catch 和 async Promise的catch 都要有。

    还在思考的问题
    1) 如果Promise chain 起来,如何写catch

    相关文章

      网友评论

          本文标题:[2018-07-26] Catch in Async Awai

          本文链接:https://www.haomeiwen.com/subject/rngimftx.html