美文网首页钉钉小程序
钉钉小程序2(对dd httpRequest的封装)

钉钉小程序2(对dd httpRequest的封装)

作者: 奇怪的双子座 | 来源:发表于2018-06-24 13:38 被阅读0次

    ajax 钉钉有jsapi  但是每次要写的参数太多而且无法拦截来处理其他事物;所以基于这个需求我们将httpRequest上层封装一下promise。

    function ddPromisify(fn) {

        return function (obj = {}) {

            return new Promise((resolve, reject) => {

              obj.success = function (res) {

                  // dd.alert({content:'success'+JSON.stringify(res.data.activity)})

                    //成功

                //  console.log("成功了了·····" + res);

                //  setTimeout(function () {

                //    dd.httpRequest.hideLoading();

                //  }, 100);

                  if(res.data.code==200){

                    resolve(res)

                  }else{//抛出异常

                    // setTimeout(function () {

                    //  dd.httpRequest.hideLoading();

                    // }, 100);

                    // dd.httpRequest.showModal({

                    //  title: '提示',

                    //  content: res.data.message,

                    //  confirmColor: '#118EDE',

                    //  showCancel: false,

                    //  success: function (res) {

                    //    if (res.confirm) {

                    //      //console.log('用户点击确定')   

                    //    }

                    //  }

                    // });

                  }

                }

                obj.fail = function (res) {

                    //失败

                    // console.log("失败了·····"+res);

                    // setTimeout(function () {

                    //  dd.httpRequest.hideLoading();

                    // }, 100);

                    // dd.httpRequest.showToast({

                    //  title: '服务器暂时无法连接',

                    //  icon: 'loading',

                    //  duration: 2000

                    // })

                    dd.alert('fail',JSON.stringify(res))

                    reject(res)

                }

                fn(obj)

            })

        }

    }

    //无论promise对象最后状态如何都会执行

    Promise.prototype.finally = function (callback) {

        let P = this.constructor;

        return this.then(

            value => P.resolve(callback()).then(() => value),

            reason => P.reject(callback()).then(() => { throw reason })

        );

    };

    /**

    * 微信请求get方法

    * url

    * data 以对象的格式传入

    */

    function getRequest(url, data) {

        var getRequest = ddPromisify(dd.httpRequest)

        return getRequest({

            url: url,

            method: 'GET',

            data: data,

            header: {

                'Content-Type': 'application/json'

            }

        })

    }

    /**

    * 微信请求post方法封装

    * url

    * data 以对象的格式传入

    */

    function postRequest(url, data) {

        var postRequest = ddPromisify(dd.httpRequest)

        return postRequest({

            url: url,

            method: 'POST',

            data: data,

            header: {

              "content-type": "application/x-www-form-urlencoded"

            },

        })

    }

    /**

    * 微信请求post方法封装

    * url

    * data 以对象的格式传入

    */

    function postRequestJson(url, data) {

      var postRequest = ddPromisify(dd.httpRequest)

      return postRequest({

        url: url,

        method: 'POST',

        data: data,

        header: {

          'Content-Type': 'application/json'

        },

      })

    }

    /**

    * 微信请求post方法封装

    * url

    * data 以对象的格式传入

    */

    function postRequestParamAndBody(url,param, data) {

      var str = "?";

      for (var key in param) {

        str = str + "&" + key + "=" + param[key]

      };

      var postRequest = ddPromisify(dd.httpRequest)

      return postRequest({

        url: url+str,

        method: 'POST',

        data: data,

        header: {

          'Content-Type': 'application/json'

        },

      })

    }

    /**

    * 微信请求put方法封装

    * url

    * data 以对象的格式传入

    */

    function putRequest(url, data) {

      var str = "?";

      for (var key in data) {

        str = str + "&" + key + "=" + data[key]

      };

      var putRequest = ddPromisify(dd.httpRequest)

      return putRequest({

        url: url + str,

        method: 'PUT',

        data: data,

        header: {

          "content-type": "application/x-www-form-urlencoded"

        },

      })

    }

    /**

    * 微信请求put方法封装

    * url

    * data 以对象的格式传入

    * parmare对象传入

    */

    function putRequestParamAndBody(url, parmaer, data) {

      var str = "?";

      for (var key in parmare) {

        str = str + "&" + key + "=" + parmare[key]

      };

      var putRequest = ddPromisify(dd.httpRequest)

      return putRequest({

        url: url + str,

        method: 'PUT',

        data: data,

        header: {

          "content-type": "application/x-www-form-urlencoded"

        },

      })

    }

    /**

    * 微信请求delete方法封装

    * url

    * data 以对象的格式传入

    */

    function deleteRequest(url, data) {

      var str="?";

      for(var key in data){

        str = str + "&" + key + "=" + data[key]

      };

      console.log(str);

      var deleteRequest = ddPromisify(dd.httpRequest)

      return deleteRequest({

        url: url + str,

        method: 'DELETE',

        data:data,

        header: {

          'Content-Type': 'application/x-www-form-urlencoded'

        }

      })

    }

    module.exports = {

        postRequest: postRequest,

        getRequest: getRequest,

        putRequest: putRequest,

        postRequestJson: postRequestJson,

        deleteRequest: deleteRequest,

        postRequestParamAndBody: postRequestParamAndBody

    }

    相关文章

      网友评论

        本文标题:钉钉小程序2(对dd httpRequest的封装)

        本文链接:https://www.haomeiwen.com/subject/tunjyftx.html