es6 Promise封装ajax

 利用Promis 做一个简单的 数据请求封装。

function requestP(options = {}) {
  const {
    url,
    data,
    type,
    async,
    header,
    dataType,
    responseType,
    success,
    fail,
    complete
  } = options;

  return new Promise((res, rej) => {
    $.ajax({
		type:type||"post",
		url: url,
		dataType: "json",
		data: data||"",
		async:async||true,
		error: function(err) {
			console.log("err",err);
			console.log("失败:" + JSON.stringify(err));
			mui.toast("网络出错,请检查网络连接!");
			rej(err);
		},
		success: function(data) {
			if(data.error_code > 0) {
				//console.log(data);
				console.log( JSON.stringify(data));
				rej(data);
				if(data.msg == "访问令牌不存在或已失效") {
					mui.toast("访问令牌不存在或已失效,请退出从新登陆");
				} else {
					mui.toast(data.msg);
				}
			}
			if(data.error_code == 0) {
				res(data);
			}
		},
		complete: function() {
			mui.hideLoading();
		}
	});
    
  });

}
function isHttpSuccess(status) {
  return status >= 200 && status < 300 || status === 304;
}
/**
 * ajax高级封装
 * 参数:[Object]option = {},参考wx.request;
 * [Boolen]keepLogin = false
 * 返回值:[promise]res
 */
function req(options = {}, keepLogin = true) {
  if (keepLogin) {
    return new Promise((res, rej) => {
          // 获取sessionId成功之后,发起请求
          requestP(options)
            .then((r2) => {
              if (r2.rcode === 401) {
              console.log("登陆失效")
              } else {
                res(r2);
              }
            })
            .catch((err) => {
              // 请求出错
              rej(err);
            });
       
    });
  } else {
    // 不需要sessionId,直接发起请求
    return requestP(options);
  }
}

 

const apiUrl = '';

const R = {
  //获取公司列表
  get_company_list(data) {
    const url = `${apiUrl}/member/Company/lst`
    return req({ url, data });
  },
  //绑定微信
	bind_wx(data){
		const url = `${apiUrl}/member/Index/bind`
    return req({ url, data });
	},
	//获取积分列表
	get_member_score_list(data){
		const url = `${apiUrl}/member/member_score/ajaxList`
    return req({ url, data });
	},
	//获取会员卡
	get_member_card_list(data){
		const url = `${apiUrl}/member/member_card/ajaxList`
    return req({ url, data });
	},
	//获取储值列表
	get_balance_list(data){
		const url = `${apiUrl}/member/balance/ajaxList`
    return req({ url, data });
	},
	
	//获取订单列表
	get_order_list(data){
		const url = `${apiUrl}/member/order/ajaxList`
    return req({ url, data });
	},
	
	//获取门店列表
	get_store_list(data){
		const url = `${apiUrl}/member/store/ajaxList`
    return req({ url, data });
	},
	
	//获取会员详情
	get_member_detail(data){
		const url = `${apiUrl}/member/member/detail`
    return req({ url, data });
	},
	
	//获取优惠券列表
	get_coupon_list(data){
		const url = `${apiUrl}/member/coupon/ajaxList`
    return req({ url, data });
	},
	
	//获取优惠券数量
	get_coupon_count(data){
		const url = `${apiUrl}/member/coupon/usableCount`
    return req({ url, data });
	},
	
}

然后可以把,所有的 接口都写到同一个 js中。

在别的页面只需要引入这2个js 调用 R.get......这类的 函数 用 .then 就可以获取数据了

如果感兴趣,也可以关注我的微信公众号,因为刚起步,所以只有几篇文章,之后会慢慢更新。

 

你可能感兴趣的:(Promise,ajax)