本文主要是介绍【微信小程序】封装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;
这篇关于【微信小程序】封装request请求模块/wx小程序手动封装Promise的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!