收藏
回答

wx.request程序bug

问题模块
API和组件

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


最后一次编辑于  2017-01-02  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

5 个回答

  • 巫建平
    巫建平
    2017-01-02

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


    2017-01-02
    赞同
    回复
  • Link
    Link
    2017-01-03

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

    2017-01-03
    赞同
    回复
  • 巫建平
    巫建平
    2017-01-03

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

    2017-01-03
    赞同
    回复
  • Cage
    Cage
    2017-06-28

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


    2017-06-28
    赞同
    回复
  • 东东
    东东
    2017-07-13

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

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

    2017-07-13
    赞同
    回复