如何在vuejs发出respose之前等待axios响应
问题描述:
我在vuejs中有一个用于文件上传的小组件(使用axios)。我试图从发出文件上传这样的回应:如何在vuejs发出respose之前等待axios响应
methods: {
...
upload(){
axios.put(URL).then(response => {
console.log('response', response)
this.$emit('uploaded', response)
}).catch(error => {
})
}
}
但在此代码,即使console.log()
响应显示了罚款,所述发送显示undefined
。我认为在响应准备好之前发出的是被调用的。
反正有异步/等待解决这个问题吗?
答
console.log响应显示正常,但发射显示未定义。
不确定你的意思,因为如果响应在console.log
内部可用,它也应该在this.$emit
内部可用。 (除非this.$emit
本身给你undefined
在这种情况下你有确定范围的问题,但不应该这样,因为你似乎在使用箭头函数)。
我觉得EMIT获取调用之前响应准备
这是一个回调的内部,一旦请求完成它应该只被调用。
但是,如果你想尝试异步/等待然后做到这一点:
async upload() {
try {
let response = await axios.put(URL);
console.log('response', response)
this.$emit('uploaded', response)
} catch(error) {
// error
}
}
我觉得这是工作。我会尝试几次来确定,但我不明白你为什么需要try/catch? – hidar
try catch与.then和.catch类似,它就在那里,因此您知道您的操作是成功还是失败 – linasmnew