http请求代码如下
myJsonp(url, options = {}) {
options['params']['callback'] = `__ng_jsonp__.__req${this.count}.finished`;
console.log(options);
this.count++;
return this.jsonp.get(url, options)
.catch(err => {
return Observable.throw(err);
});
}
对于200的请求是可以正常处理的,返回的数据如下
__ng_jsonp__.__req0.finished({message: "success", code: 0, status_code: 200, data: {,…}});
但是如果417报错的情况下,jsonp捕捉不到报错信息,http请求的status也是200
这是catch中抓到的err,本应该是417,但是status是200
下图是network中直接打开接口拿到的数据,可以看到接口确实是417了的
因为jsonp用的不多,所以机制不是很了解
是jsonp不接受这种后台的报错机制还是后台的报错有特殊的格式,
希望大佬们可以帮忙解惑一下
jsonp不能识别417,422这种逻辑报错,只要请求成功,不管后台返回什么错误,都是200,所以通过加status_code解决问题