微信小程序 01 后台请求接口封装
为下一次开发做准备哈丷
2019-09-29
一个文件能有多个export 但只能有一个export default
<script>
export const host = 'https://xxx.com'; // 域名
let lock =true
export default function request(opt){
return new Promise((resolve,reject)=>{
if (opt.isLock) {
if (!lock) return;
lock = false;
}
// 默认开启loading
if (!opt.isLocking) {
wx.showLoading({
title: '加载中...'
});
}
wx.request({
url: `${host}${opt.url}`,
method:opt.method||'post',
data:opt.data||{},
header:{
'content-type': opt.hedaer || 'application/json', // 默认值
'token': wx.getStorageSync('token')
},
success:function(res){
resolve(res)
},
fail:function(res){
reject(res)
},
complete:function(res){
if (!opt.isLocking) {
wx.hideLoading();
}
if (opt.isLock) {
lock=true
}
}
})
})
}
</script>
<script>
// 保存地址
savaData() {
if(isPhone(this.data.tel)==false){
Notify('请输入正确的手机号');
return
}else{
request({
url: '/api/Address/AddAddress',
isLock: true,//默认按钮是不受控制的,通过进行判断,如果数据还没有请求到就不给点击,避免按钮点击过快造成的重复提交;
//就好比地铁站的闸机吧?就没控制好,还没关好又可以刷下一个了,意思就是你才把锁打开了,但是还没执行关锁,又开始执行开
//锁了,现在加这个变量就是为了解决这个问题,现在就是请求完毕之后,所有代码执行完毕,你可以理解为已关锁,然后关锁之后
//把变量改成true,然后再点击才能执行开锁,isLock只是控制需不需要解决这个问题,而达到这个目的的变量是lock
data: {
name: this.data.name,
tel: this.data.tel,
provice: this.data.provice,
city: this.data.city,
county: this.data.county,
detail_address: this.data.address,
is_default: this.data.isDefault
}
}).then(res => {
if (res.data.code == 200) {
wx.showToast({
title: '保存成功',
})
wx.navigateTo({
url: '../../../personalCenter/pages/addressManagement/addressManagement',
})
} else {
Notify(res.data.msg);
}
})
}
}
</script>