1、resolve
當a>0時,正常狀況依次輸出A、B、Casync
console.log("A");
let result = await this.test();
console.log("C:",result);
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = 3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
});
}
2、沒有處理失敗信息,致使程序沒法繼續執行
當a<0時。輸出A、B後,C沒法輸出,程序沒法繼續往下執行。this
console.log("A");
let result = await this.test();
console.log("C:",result);
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = -3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
});
}
3、catch
增長catch處理錯誤,程序能夠繼續執行spa
console.log("A"); let result = await this.test(); console.log("C:",result); private test(){ return new Promise((resolve,reject)=>{ console.log("B"); let a = -3; if(a > 0){ resolve(a); }else{ reject(0); } }).catch((err)=>{ console.log("err:", err); }); }
這樣也能夠code
let result = await this.test().catch(()=>{});
4、使用then處理錯誤,程序繼續執行
換一種寫法,使用then。blog
console.log("A"); let result = await this.test().then((res)=>{ console.log("success:", res); },(res)=>{ console.log("fail:", res); }); console.log("C:",result); private test(){ return new Promise((resolve,reject)=>{ console.log("B"); let a = -3; if(a > 0){ resolve(a); }else{ reject(0); } }); }
5、在await處使用catch,程序繼續執行
protected async createGameScene() { console.log("A"); let result = await this.test().catch((err)=>{console.log("err:",err)}); console.log("C:",result); } private test(){ return new Promise((resolve,reject)=>{ console.log("B"); let a = -3; if(a > 0){ resolve(a); }else{ reject(0); } }); }
6、在test裏catch後,程序會不執行then的reject,而是resolve。
protected async createGameScene() { console.log("A"); let result = await this.test().then((res)=>{ console.log("C:",res); },(res)=>{ console.log("D:",res) }).catch((err)=>{console.log("E:",err)}); console.log("F:",result); } private test(){ return new Promise((resolve,reject)=>{ console.log("B"); let a = -3; if(a > 0){ resolve(a); }else{ reject(0); } }).catch((err)=>{console.log("test err:", err)}); }