【发布时间】:2016-12-19 15:15:51
【问题描述】:
我有一个简单的async 函数。它只是发送一个请求并返回数据:
export const updatePanorama = async ({ commit }, payload) => {
const urlEnd = '/v1/pano/update'
const type = 'post'
const resp = await api.asyncRequest(urlEnd, type, payload)
commit('SET_PANORAMA', resp.data)
return resp
}
这就是我使用该功能的方式:
handleUpdatePanorama (panorama) {
const payload = {}
this.updatePanorama(payload).then(resp => {
this.setIsLoading(false)
this.handleAlert('updateSuccess', 'success')
}).catch(() => {
this.setIsLoading(false)
this.handleAlert('updateError', 'danger')
})
},
问题是,如果then 内部有错误,catch 之后的代码就会运行。但是这样我不知道catch错误是请求错误还是内部代码触发的错误。
我正在尝试try 和catch 来解决这个问题:
handleUpdatePanorama (panorama) {
try {
const payload = {}
const resp = await this.updatePanorama(payload)
console.log('resp:', resp)
this.setIsLoading(false)
this.handleAlert('updateSuccess', 'success')
} catch (err) {
this.setIsLoading(false)
this.handleAlert('updateError', 'danger')
})
},
但是,我在这一行中遇到了意外的令牌错误:await this.updatePanorama(payload)
我做错了什么?
【问题讨论】:
-
不能使用await,除非函数是
async -
仅供参考,
async/await不是 ES7 的一部分。
标签: javascript async-await ecmascript-2017