javascript-如何在发出vuejs中的respose之前等待axios响应
作者:互联网
我在vuejs中有一个小组件用于文件上传(使用axios).我正在尝试从文件上传中发出响应,如下所示:
methods: {
...
upload (){
axios.put(URL).then(response => {
console.log('response', response)
this.$emit('uploaded', response)
}).catch(error => {
})
}
}
但是在此代码中,即使console.log()响应显示正常,但emit显示未定义.我认为在响应准备好之前就已经调用了发射器.
无论如何,有使用async / await解决此问题的方法吗?
解决方法:
console.log response shows up fine but the emit shows undefined.
不确定您的意思是什么,因为如果响应在console.log内部可用,那么它也应该在this.$emit内部可用. (除非this.$emit本身给您未定义的情况,在这种情况下您会遇到范围问题,但事实并非如此,因为您似乎在使用箭头函数.)
I think the emit is getting called before the response is ready
它在回调内部,因此仅在请求完成后才应调用它.
但是,如果您想尝试异步/等待,请执行以下操作:
async upload() {
try {
let response = await axios.put(URL);
console.log('response', response)
this.$emit('uploaded', response)
} catch(error) {
// error
}
}
标签:async-await,vuejs2,javascript 来源: https://codeday.me/bug/20191025/1929774.html