封装接口请求函数,返回一个promise

338 阅读1分钟

小程序中:

function get(url,data,contenttype,header){
    return new Promise((resolve,reject)=>{
                uni.request({
                        url: eruptBaseUrl + url,
                        data: data.isNeed == undefined ? data : '',
                        method:"get",
                        header:{
                                'content-type': contenttype == undefined ? "application/x-www-form-urlencoded" : contenttype,
                                'erupt': header == undefined ? '' : header.erupt,
                                'token': header == undefined ? '' : header.token,
                        },
                        success(res) {
                                resolve(res);
                        },
                        fail(err) {
                                reject(err);
                        }
                })
        })
}

pc端中:

window.myAjax = function (url, data, successBack, errorBack) {
layer.load(1);
$.support.cors = true;
var index = "";
var ajaxTimeoutTest = $.ajax({
url: url,
data: data,
ansync: true,
type: "post",
dataType: "json",
timeout: 10000,
cache: false,
success: function (res) {
        layer.closeAll('loading');
        successBack(res)
},
complete: function (XMLHttpRequest, status) {
        if (status == 'timeout') {//超时,status还有success,error等值的情况
                ajaxTimeoutTest.abort();
                layer.alert('请求超时2333', { title: language.language1, icon: 0 })
                layer.close(index)
        }
        layer.close(index)
},
error: function (res) {
        console.log(res, 123.4564)
        layer.closeAll('loading');
        layer.close(index)
        if (errorBack != null) {
                errorBack(res);
        } else {
                layer.alert('系统异常,请联系管理员..', { title: language.language1, icon: 2 })
        }
}
})

}
window.$http = function (options) {
  return new Promise((resolve, reject) => {
    try {
      const { url, data, success, fail } = options
      myAjax(url, data, function (res) {
        const { data, rows } = res
        resolve(data || rows)
      }, function (res) {
        try {
          const { data, rows } = res
        } catch (e) {
          reject(res)
        }
        reject(data || rows)
      }) //myAjax函数结束
    } catch (e) {
      reject("请求失败")
    }
  })
}

//调用

getBasicData = function(){
  return new Promise((resolve,reject)=>{
    $http({
                url:"containercode/api/business/getMethods",
                header:{
                        "Content-Type":"application/x-www-form-urlencoded"	
                },
                data:{
                        boxNo:this.boxNo,
                        language:"zh-cn"
                },
                success:res=>{
                        if(res && res.length > 0){
                          this.basicData = res[0]
                        }else{
                          reject(res)
                        }
                        this.createAction()
                        resolve(this.basicData)
                },
                fail:reject
    })
  })
}

//调用

getBasicData().then(res=>{
    loadContainerInfo(res)
    box.getTemperatureAndHumidityData().then(res=>{
            loadTemperatureAndHumidityData(res)
    }).catch(e=>{})
    box.getBayonetData().then(res=>{
            $(".bayonetBox").show()
            loadBayonetData(res[0])
    }).catch(e=>{
            $(".bayonetBox").hide()
    })
    loadHistoricalOperation(number, pageIndex, null);
    getStatusDataByBoxNo(number);
}).catch((e)=>{
    $(".message").text("您查询的箱号暂时没有数据")
    $(".placeSearch").show();
    $(".searchResult-main").hide();
    // layer.alert("您搜索的箱号暂无数据", {
    // 	title: language.language1,
    // 	icon: 2
    // });
    $(".searchResult").show()
    $(".basicInfo").css("visibility","hidden")
})