1.模板消息
小程序模板消息需要关联生活号,并绑定到小程序上。
https://docs.alipay.com/mini/introduce/message
模板消息由服务端请求接口产生
2.登录有效期的处理
http.doRequest(url, body, header).then(resolve, err => {
//登录失效,重新登录一次
if (err && err.code && (err.code === '-1' || err.code === -1)) {
_this.doLogin().then(token => {
header[`${SESSION_KEY_NAME}`] = token;
http.doRequest(url, body, header).then(resolve, reject);
}, reject);
return;
}
reject(err);
});
http请求返回-1时,进行登录操作,调用授权获取token,并把之前的http请求再执行一遍
3.同一个页面tab切换
注意减少网络请求,及分页
设置 tabList[],某一项为{
title: '未使用',
loaded: false,
loading: false,
completed: false,
params: {
type: 'notuse',
start: 0
},
list: []
},
再设置currenLsit 为其某一项
4.定时器(倒计时及轮询)
倒计时:
timer:null,
Second:60,
plusSecond(){//数字减少
if(this.data.second > 0){
let plusSecond = this.data.second -1;
this.setData({
second:plusSecond
});
}else{
this.setData({
second:60,
codeGetting:1,
})
}
},
startTimer(){//开启定时器
this.plusSecond();
let _this = this;
this.setData({
timer: setTimeout(() => {
_this.startTimer();
}, 1000)
});
},
stopTimer() {//定时器停止
if (this.data.timer) {
clearTimeout(this.data.timer);
this.setData({
timer: null,
second:60,
codeGetting:1,
});
}
},
轮询网络请求时应注意,查询超时要丢弃该次查询
//单次查询耗时超时,丢弃该查询
let endTime = new Date().getTime();
let perUsedTime = endTime - startTime;
if (perUsedTime > _this.data.perTimeout) {
console.log('轮询机制超时,break掉');
return;
}
5.防止暴力点击或切换tab时网络加载不及时导致的数据错乱
解决:使用时间戳
点击时设置时间戳变量
this.setData({
timeStamp:new Date().getTime()
});
判断时间戳是否符合条件
let timeStamp = this.data.timeStamp;
this.doRequest($orderListUrl, this.data.params).then(res => {
if (timeStamp != this.data.timeStamp){
return;
}
})
6.网络请求传递参数为Object时,需转化成String
使用JSON.stringfy()