如何在vuejs

时间:2017-10-28 13:28:53

标签: javascript async-await vuejs2

我在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来解决这个问题?

1 个答案:

答案 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
  }
}