前端js的传统异步解决方案及时回调,but我们亲爱的es6新增了三种解决方案:
- Promise
- Generator
- async
之前项目中一直是用promise来解决,vue项目中的axios其实也是返回的Promise对象,async其实算是Generator的语法糖,这次我们不讲Promise 和Generator,因为对async一直理解不是很透彻,拿一个项目中的实例改造下async:
此项目用的vue+elementUI,这里是一个CRM管理了系统,客户档案信息管理模块,由于信息比较庞大,分成三个标签页,三个单独的接口信息,自然分成三个子组件。
()
其中当父组件点击提交按钮时,会分别请求三个接口
- 第一个接口信息需要验证,第二三个接口信息不需要验证
- 只有当第一个请求成功之后,才会请求后面两个,
- 当后两个请求成功之后返回上一页。
index.vue
父组件点击提交触发子组件submit事件
submitAll() {
this.$refs.baseInfo.submit()
/*if (this.buyer_info) {
this.$refs.businessInfo.submit()
this.$refs.chainInfo.submit()
this.$router.go(-1)
}*/
},
baseInfo.vue
*提交第一个子组件信息*
submit() {
this.$refs['baseForm'].validate((valid) => {
if (valid) {
this.handleParams()
axios.post('/v2/buyer/createBuyerInfo',this.baseForm).then(res =>{
if(res.data.code == 1) {
this.$emit('isOK',true)
} else {
this.$message({
sh