测试代码
mounted(){
this.test();
},
methods:{
test(){
this.testapi1();
this.testapi2();
},
testapi1(){
console.log('testapi1 start');
this.$request({
url:'/api',
method:'post',
data:{}
}).then(data=>{
console.log('testapi1 data')
});
console.log('testapi1 end')
},
testapi2(){
console.log('testapi2 start');
this.$request({
url:'/api',
method:'post',
data:{}
}).then(data=>{
console.log('testapi2 data');
});
console.log('testapi2 end');
}
}
我现在想要的预期输出结果是
testapi1 start
testapi1 data
testapi1 end
testapi2 start
testapi2 data
testapi2 end
我知道应该用async配合await,但我自己试了下边两种写法都不行
- 第一种写法
async testapi1(){
console.log('testapi1 start');
await this.$request({
url:'/api',
method:'post',
data:{}
}).then(data=>{
console.log('testapi1 data')
});
console.log('testapi1 end')
}
- 输出结果
testapi1 start
testapi2 start
testapi2 end
testapi1 data
testapi1 end
testapi2 data
- 第二种
async test(){
await this.testapi1();
this.testapi2();
},
- 输出结果
testapi1 start
testapi1 end
testapi2 start
testapi2 end
testapi1 data
testapi2 data
请问该怎么写才能实现我要的效果?
原则就是——在异步但需要等待的地方await,或者说是异步但需要异步执行完再往下走的地方await,这里是尽量按照你原有的代码写的,实际上request的响应是可以通过await拿到的,不需要then