这里想测试一下用了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
网友评论