【微信小程序】封装request请求模块/wx小程序手动封装Promise
作者:互联网
// 封装请求模块
const Promise = require('./Promise.js');
const baseUrl = 'http://127.0.0.1:8080/';
function request(method, url, data) {
return new Promise((res,rej) => {
let header = {
'content-type': 'application/json'
};
wx.request({
url: baseUrl + url,
method: method,
header: header,
data: method === POST ? JSON.stringify(data) : data,
success: (result) => {
res(result);
},
fail: (err) => {
rej(err);
}
})
})
}
module.exports = request
// 手动封装Promise
function promise(toWait) {
this.t = new Date();
this.isPromiseObject = 1;
this.toWait = toWait;
this.thenList = [];
this.thenIndex = 0;
this.res = function (data) {
var thenInfo = this.thenList[this.thenIndex];
if(!thenInfo) {
return;
}
var r = thenInfo.successCallback(data);
if (r && r.isPromiseObject) {
this.toWait = r.toWait;
this.toWait(this.res.bind(this), this.rej.bind(this));
}
this.thenIndex++;
}
this.rej = function (error) {
var thenInfo = this.thenList[this.thenIndex];
if(typeof thenInfo.failedCallback!='undefined'){
thenInfo.failedCallback(error);
} else {
throw '未捕获的promise错误,请这then方法里,传递reject参数';
}
}
this.fired = false;
this.then = function (sc, fc) {
var then = {
'successCallback': sc,
'failedCallback': fc
}
this.thenList.push(then);
if (!this.fired) {
this.fired = true;
this.toWait(this.res.bind(this), this.rej.bind(this));
}
return this;
}
}
module.exports = promise;
标签:function,封装,微信,toWait,程序,rej,thenInfo,res,data 来源: https://www.cnblogs.com/lshifu/p/16559919.html