我在typescript项目里用reqwest写了一个公共的请求方法:
function postReq(
obj: {
url: string,
headers?: any,
data?: Object,
type?: string,
method?: string,
contentType?: string
}) {
return Reqwest({
url: obj.url,
method: 'post',
type: obj.type||'json',
contentType:obj.contentType||'application/json',
data: JSON.stringify(obj.data||{}),
headers: obj.headers||{}
}).then((res:Response) => {
if (res.status.code != 0) {
// return Promise.reject(res);
throw new Error('数据错误');
} else {
return res;
}
}).fail((err,msg) => {
console.log(err);
let errBody;
try {
errBody = JSON.parse(err.response)
errBody = errBody.status.msg;
} catch (error) {
errBody = 'JSON 编译出错'
}
message.error(errBody);
// alert(`接口出错!${errBody}`);
});
}
在调用的时候这样调用:
postReq({
url: '/api/prod/save',
data: body
})
.then((res:Response) => {
// do somthing when resolve
});
现在的问题是,有些时候能捕获到异常,有些时候又不能捕获。
我现在的问题是,我在then里面throw
一个错误,为什么不会跳到fail函数里执行呢?
記得Reqwest返回的不是Promise/A+或ES6, 是個自己的Promise實現
我都是Promise.resolve(reqwest()) 這樣用的