记录异步处理的两种方式

例子说明:执行方法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源