javascript-兑现承诺后传递错误
作者:互联网
嗨,我是新手,如果我的问题表达不正确,请对不起.
我想在全局函数中定义axios js的承诺.
在这里,我要全局处理/捕获401状态并注销用户.
我不想在每个查询中处理它.
这是我的源全局函数来处理请求:
export function requestData (url, payload = {}) {
return axios.post(url, payload)
.then(response => {
return response.data
})
.catch(error => {
if (error.response.status === 401) {
logout()
} else {
return error
}
})
}
这是我在控制器上使用的示例函数:
requestData('/api/persons', {options: this.options, search: search})
.then(data => {
this.data = data
})
.catch(error => {
this.error = error.toString()
})
我的问题是,发生异常时,控制器中的promise catch不会触发.如何实现呢?
解决方法:
用抛出错误代替返回错误是成功的一半.
当我说对了,promise catch中的throw错误将不会调用下一个promise .catch语句.这将在.then语句中起作用.
这样,它应该可以工作:
export function requestData (url, payload = {}) {
return axios.post(url, payload)
.then(response => {
return response.data
})
.catch(error => {
if (error.response.status === 401) {
logout()
} else {
return error
}
})
.then(result => {
if (result instanceof Error) {
throw result
} else {
return result
}
})
}
标签:axios,promise,vuejs2,javascript 来源: https://codeday.me/bug/20191025/1929795.html