API Server返回httpStatusCode为500, body携带错误信息, wx.request却相应了success函数。导致外面包装的Promise执行了resolve
//代码, 红色部分为log输出
return new Promise(function (resolve, reject) {
wx.request({
url: config.apiRoot + uri,
method: 'POST',
data: data,
header: _.extend({
'content-type': 'application/json'
}, config.headers),
success: function (res) {
console.log('正确在这里')
console.log(res);
resolve(res.data)
},
fail: function (res) {
console.log('错误在这里')
reject(res)
},
complete: function () {
if (opt.showToast) {
_hideLoading()
}
}
})
});
//Console截图
status code 是业务逻辑,success 表示本次请求已经完成,开发者需要理解 status code 。
哎哟,突然发现这个坑,这坑埋的也太深了吧,要不是服务端异常,完全不知道这情况
fail什么情况下触发???照2楼这么说的话,不是只要一个complete就行了,为什么还要分success跟fail,这不是误导人吗
这个bug到现在还在,响应403也进success,坑太深,爬了好久。。。
res.statusCode是http status code, 4xx或者5xx的时候应该触发fail函数才对
建议更新一下wx.request函数,现在只能这样搞了,太丑