鍍金池/ 問答/HTML/ vue中methods用async寫法報(bào)錯(cuò)但能執(zhí)行

vue中methods用async寫法報(bào)錯(cuò)但能執(zhí)行

頁面中有一個(gè)搜索的方法,調(diào)用時(shí)會調(diào)用service層的分頁查詢方法,由于這個(gè)方法是調(diào)用封裝的axios異步所以用async和await

但頁面初始化和方法觸發(fā)的時(shí)候會報(bào)錯(cuò):Invalid handler for event "click": got undefined

把a(bǔ)sync和await去掉就不會報(bào)錯(cuò)了

可是這個(gè)搜索的方法正常執(zhí)行了啊,結(jié)果頁正常顯示,就是會在控制臺出現(xiàn)一堆上面的錯(cuò)誤,找不到點(diǎn)擊事件

(PS:不知道為啥網(wǎng)站上傳不了圖片了,就只能貼代碼啦)

user.vue

async handleSearch() {
  console.log('搜索啦')
  let res = await this.service.findPage(this.searchInfo)
  console.log(res)
  this.pageList = res.list
  this.total = res.total
}

封裝的axios最終處理如下

fetch.js

return axios(settings)
  .then(response => {
    let returnData = response.data.content || {}
    return returnData
  }).catch(err => {
    loadingInstance.close()
    Message.error('哇,請求出錯(cuò)啦~~~')
    return Promise.reject(err)
  })
回答
編輯回答
影魅

事件處理函數(shù)不能設(shè)置為async的,不能會出問題,你可以把你現(xiàn)在的事件處理函數(shù)里的代碼封裝成一個(gè)函數(shù)。這個(gè)函數(shù)可以加async,然后再調(diào)用

2018年7月8日 19:06
編輯回答
蝶戀花

我猜是這里return的這個(gè)對象不是Promise對象造成的,但是不是很確定。因?yàn)閍wait后面必須是Promise對象才可以的,你看看是不是應(yīng)該把 return returnData 改成 return Promise.resolve(returnData)

2018年2月16日 17:41