封装原理:(先考虑网络请求中会改变的值,把改变的值作为参数引入)
会改变的值:
1.url (同一项目url相同,可提前把url放在app.js中作为全局变量使用)
2.data(后台接口的其他参数)
假设后台返回的数据是这样:
{code: "1", message: "操作成功", result: {…}}
code=1时表示操作成功
message表示后台返回的提示信息
result表示返回的要用到的结果
promise对象方法参考阮一峰前辈的es6入门链接:点击打开链接
//封装请求函数
post: function (url, data) {
var promise = new Promise((resolve, reject) => {
var that = this;
//网络请求
wx.request({
url: url,
data: data,
method: 'POST',
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: function (res) {
console.log(res.data)
// res.data为后台返回数据 假设返回数据为 {code: "1", message: "操作成功", uuid: "otfB65TqAdl3mQXf49t20tgZczhA", result: {…}}
if (res.data.code == 1) { //code=1时表示操作成功,result为后台返回的结果数据
resolve(res.data.result);
} else { //否则返回后台错误提示信息message
reject(res.data.message);
}
},
fail: function (e) {
reject('网络出错');
}
})
});
return promise;
},
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
},
onLoad: function (options) {
var that=this;
//要传的数组对象
var data = {
controller: 'wxxiaochengxu',
act: 'person',
}
//调用 app.js里的 post()方法
app.post('http://www.yous_url',data).then((success_data) => {
console.log(success_data);//正确返回结果 即app.js里的res.data.result
wx.hideLoading();
}).catch((fail_message) => {
console.log(fail_message);//错误提示信息 即app.js里的res.data.message
wx.hideLoading();
});
},
})