小程序request请求用promise公共方法以及调用
1.方法:
const baseUrl = 'https://api.it120.cc';
// 配置接口请求的公共方法
const http =({url ='',param ={},method='',header={}}={}) =>{
wx.showLoading({
title: '请求中,请耐心等待...',
});
let timeStart = Date.now();
return new Promise((resolve,reject)=>{
wx.request({
url: getUrl(url),
data:param,
method: method,
header:header,
complete:(res)=>{
wx.hideLoading();//慎用hideLoading,会关闭wx.showToast弹窗
console.log(`耗时${Date.now() - timeStart}`);
if(res.statusCode ==200){//请求成功
resolve(res.data)
}else{
reject(res);
}
}
})
})
}
// 获取url
const getUrl = (url)=>{
if(url.indexOf('://')== -1){
url = baseUrl +url ;
}
return url;
}
//暴露出去调用的方法
const _api = (url,param ={},method,header)=>{
return http({
url,
param,
method:method?method:'get',
header:header ? header : { "Content-Type": "application/json" },
})
}
方法暴露出去
module.exports = {
formatTime: formatTime,
api:_api
}
2.掉用:
const until = require('../../utils/utils.js') // 单个请求
until.api('/authorize',param,'post').then(res => {
console.log("authorize:",res);
}).catch(e => {
console.log(e);
wx.showToast({
title: e.data.errMsg,
icon: 'none',
duration: 3000
})
})
// 一个页面多个请求 Promise.all([ api.get('list'), api.get(`detail/${id}`) ]).then(result => { console.log(result) }).catch(e => { console.log(e) })