我是ES7的新手
我想在Vue.js中使用async / await
这是我的代码
created (){
this.getA()
console.log(2)
this.getB()
},
methods : {
getA (){
console.log(1)
},
getB (){
console.log(3)
}
}
它回来了
1
2
3
但是当我用axios时,那么
created (){
this.getA()
console.log(2)
this.getB()
},
methods : {
getA (){
$axios.post(`/getA`,params){
.then((result) => {
console.log(1)
})
},
getB (){
console.log(3)
}
}
它回来了
2
3
1
所以我想在该代码中添加async / await。
我怎样才能使用async / await?
我试过了
async created (){
await this.getA()
console.log(2)
await this.getB()
},
methods : {
getA (){
$axios.post(`/getA`,params){
.then((result) => {
console.log(1)
})
},
getB (){
console.log(3)
}
}
它返回相同的结果。
你必须使用then
或await
,而不是如图所示:
如果使用then
created () {
this.getA().then((result) => {
console.log(1)
console.log(2)
this.getB()
})
},
methods : {
getA () {
return $axios.post(`/getA`,params);
},
getB (){
console.log(3)
}
}
如果使用await
async created (){
await this.getA()
console.log(1)
console.log(2)
this.getB()
},
methods : {
getA : async() => {
return $axios.post(`/getA`,params);
},
getB : async() => {
console.log(3)
}
}
请注意,在调用getB()时,您不需要then
或await
,因为它不是异步的
试试这个
async created (){
let resultFromgetA = await this.getA()
console.log(2)
await this.getB()
},
methods : {
getA :() =>{
return $axios.post(`/getA`,params);
},
getB : async() =>{
//use await key with async calls
console.log(3)
}
}