编程语言
首页 > 编程语言> > javascript-如何在发出vuejs中的respose之前等待axios响应

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