收藏
回答

wx.request 请求封装有实现的小伙伴吗?

有没有觉得微信原生的wx.request的这个太繁琐了,每次都要写一大堆,为了后面书写方便完全可以进行二次封装,但我在封装的时候发现有些问题,例如我想封装成这样:

app.post(app.requestBasePath + "后端请求地址",params).success(function(data){


});

可以吗?



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

21 个回答

  • 杨泉
    杨泉
    2018-03-14

    提示, Promise

    2018-03-14
    赞同
    回复
  • 杨泉
    杨泉
    2018-03-14

    算了,贴点代码吧

    自行根据自己的接口代码改去吧


    return new Promise((resolve, reject) => {
        wx.request({
          url: requestUrl,
          method,
          data: body,
          header,
          dataType: type,
          success: response => {
            // getApp().log(JSON.stringify(response));
            //业务数据异常
            if (response.statusCode < 200 || response.statusCode >= 300 || !response.data) {
              reject({
                error: -1,
                errorMessage: '网络连接异常',
                request: url,
                data: response,
              })
            } else if (response.data.status != 0) {
              reject({
                error: response.data.status,
                errorMessage: response.data.status == 500 ? '网络连接错误' : response.data.error.msg,
                data: response.data.error,
                request: response.data.request,
                serverTime: response.data.serverTime,
              })
            }
            //正确返回
            console.log(response.data)
            resolve(response.data)
          },
     
          //请求异常
          fail: err => {
            // getApp().log(JSON.stringify(err));
            reject({ error: -1, errorMessage: '网络连接异常', data: err, request: url })
          },
        })
      })


    2018-03-14
    赞同
    回复
  • 这一秒幸福
    这一秒幸福
    2018-03-14

    可以吗?我试试 谢谢

    2018-03-14
    赞同
    回复
  • wxu(旭良倒纱行)
    wxu(旭良倒纱行)
    2018-03-14

    可以的。

    2018-03-14
    赞同
    回复
  • f番茄花园
    f番茄花园
    2018-03-14

    真机调试的时候不支持Promise啊……你是怎么打包Promise的

    2018-03-14
    赞同
    回复
  • 这一秒幸福
    这一秒幸福
    2018-03-15

    同问 好像用这个 Promise不行啊

    2018-03-15
    赞同
    回复
  • wxu(旭良倒纱行)
    wxu(旭良倒纱行)
    2018-03-15

    我用的就是

    app.post(app.requestBasePath + "后端请求地址",params).success(function(data){


    });

    这种形式的


    2018-03-15
    赞同
    回复
  • 这一秒幸福
    这一秒幸福
    2018-03-15

    看看 你的封装方法可以吗?

    2018-03-15
    赞同
    回复
  • 这一秒幸福
    这一秒幸福
    2018-03-15

    谢谢哦 我再试试吧

    2018-03-15
    赞同
    回复
  • 箩灬卟
    箩灬卟
    2018-03-16


    用callback回调。前面的header那些跟据个人情况。其它都一样。就是用一个callback.然后调用时

    sent(uri,data,function(res){

        //这里就是成功的回调了

    })


    可以把它放在一个公用文件里,用require引入

    2018-03-16
    赞同
    回复