Promise在await報錯後,如何繼續往下跑...

 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)});
    }

  

相關文章
相關標籤/搜索