wx.request程序bug
发布于 6 年前 作者 taotian 7217 次浏览 来自 问答

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截图

5 回复

res.statusCode是http status code, 4xx或者5xx的时候应该触发fail函数才对

哎哟,突然发现这个坑,这坑埋的也太深了吧,要不是服务端异常,完全不知道这情况

fail什么情况下触发???照2楼这么说的话,不是只要一个complete就行了,为什么还要分success跟fail,这不是误导人吗

建议更新一下wx.request函数,现在只能这样搞了,太丑

这个bug到现在还在,响应403也进success,坑太深,爬了好久。。。

status code 是业务逻辑,success 表示本次请求已经完成,开发者需要理解 status code 。

回到顶部