1. 程式人生 > 其它 >非同步處理的兩種方式

非同步處理的兩種方式

記錄非同步處理的兩種方式

例子說明:執行方法A之後再執行方法B

定義方法

// 方法A
getStrA() {
	return new Promise(function (resolve, reject) {
		resolve('方法A')
	})
},
// 方法B
getStrB() {
	return new Promise(function (resolve, reject) {
		resolve('方法B')
	})
},

方式一

this.getStrA().then(resA => {
  console.log(resA)   // 輸出方法A的resolve資料
  this.getStrB().then(resB => {
    console.log(resB) // 輸出方法B的resolve資料
  }).catch(errB => {
    console.log(errB) // 輸出方法B的reject資料
  })
}).catch(errA => {
  console.log(errA)   // 輸出方法A的reject資料
})

方式二

this.getStrA().then(resA => {
  console.log(resA)   // 輸出方法A的resolve資料
  return this.getStrB()
}).then(resB => {
  console.log(resB)   // 輸出方法B的resolve資料
}).catch(err => {
  console.log(err)    // 按執行順序輸出第一個resolve資料
})

兩種實現結果一樣,方式二寫法上較為簡短。

注:本文可分享可轉發,轉發請註明出自bug源