钉钉小程序

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

2018-06-24  本文已影响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

}

上一篇下一篇

猜你喜欢

热点阅读