request.js
此方法中已经将请求的数据data和请求头header封装了进去,默认为空
// 封装的wx.request请求
function request(url,method,data={},header={}){
return new Promise(function(resolve,reject){
wx.request({
url: url,
method: method,
data:data,
header:header,
success:function(res){
if(res.statusCode == 200){
resolve(res)
}else{
reject('error')
}
},
fail:function(e){
reject(e)
}
})
})
}
// 封装的请求方法需要暴露出去
module.exports = {
request: request
}
用户请求的url,统一放在app.js里面,以方便后期上线或者测试对接口进行修改
app.js
//app.js
App({
onLaunch: function () {
},
// 全局变量
globalData: {
userInfo: null,
},
// 用户的信息请求的url
userUrl:{
host: "http://op.juhe.cn",
},
})
然后在你的页面进行页面请求,以index.js页面为例
//获取应用实例
const app = getApp()
// 封装的接口请求
const request = require('./../../utils/request.js')
Page({
data: {
},
onLoad: function () {
var that = this;
// 初始化请求
that .getuser()
},
// 模拟请求
getuser:function(){
var uid = '1456765432'
request.request(app.userUrl.host,'get',{
uid:uid,
}).then(res => {
// 打印接口请求的结果
console.log(res)
},e =>{
console.log(e)
})
}
})
模拟接口异步请求(链式调用)
function getUserName(){
let data = 'superman';
return new Promise((resolve, reject) => {
setTimeout(resolve(data), 4000);
})
}
function getUser(username){
let data = {
id:1,
username: 'superman',
gender: 'male'
}
return new Promise((resolve, reject) => {
if(username){
setTimeout(resolve(data), 2000);
}
else{
reject('err');
}
})
}
getUserName().then(username => {
return getUser();
})
.then(user => {
console.log(user);
})
.catch(err => {
console.log(err);
})