我在vuejs中有一个小组件用于文件上传(使用axios)。我试图从文件上传中发出响应,如下所示:
methods: {
...
upload (){
axios.put(URL).then(response => {
console.log('response', response)
this.$emit('uploaded', response)
}).catch(error => {
})
}
}
但在此代码中,即使console.log()
响应显示正常,发布也会显示undefined
。我认为在响应准备好之前会调用emit。
有没有使用async / await来解决这个问题?
答案 0 :(得分:4)
console.log响应显示正常,但emit显示未定义。
不确定您的意思,因为如果响应在console.log
内可用,则它也应该在this.$emit
内可用。 (除非this.$emit
本身给你undefined
,在这种情况下你会遇到范围问题,但在你似乎使用箭头函数的情况下不应该这样。)
我认为在响应准备好之前会调用emit
它位于回调内部,因此只有在请求完成后才会调用它。
但是如果您想尝试 async / await ,请执行以下操作:
async upload() {
try {
let response = await axios.put(URL);
console.log('response', response)
this.$emit('uploaded', response)
} catch(error) {
// error
}
}