[摘要]以下是我自己编写的一个代码,功能是在微信公众号开发过程中实现倒计时的。效果如下,订单已提交,请在2分57秒内完成支付。纯代码解析。开始的思路没有考虑页面在后台运行以及锁屏等情况。代码如下:let i...
以下是我自己编写的一个代码,功能是在微信公众号开发过程中实现倒计时的。效果如下,订单已提交,请在2分57秒内完成支付。纯代码解析。
开始的思路没有考虑页面在后台运行以及锁屏等情况。代码如下:
let interval = setInterval(() => {
let {staticTime} = this.state;
staticTime = staticTime - 1;
if (staticTime <= 0) {
clearInterval(interval);
this.setState({
tip:'支付超时',
staticTime:0
});
return;
}
let minutes = parseInt(staticTime/60);
let Seconds = staticTime%60;
let tip = '订单已提交,请在'+minutes+'分'+Seconds+'秒内完成支付';
this.setState({
tip:tip,
staticTime:staticTime
});
}, 1000);
后来测试发现锁屏或者把页面留在后台,计算就不对,于是把代码进行了如下改造。
let interval = setInterval(() => {
let {backGroundTime, staticTime} = this.state;
this.setState({
backGroundTime:0
});
staticTime = staticTime - backGroundTime - 1;
if (staticTime <= 0) {
clearInterval(interval);
this.setState({
tip:'支付超时',
staticTime:0,
});
return;
}
let minutes = parseInt(staticTime/60);
let Seconds = staticTime%60;
let tip = '订单已提交,请在'+minutes+'分'+Seconds+'秒内完成支付';
this.setState({
tip:tip,
staticTime:staticTime,
});
}, 1000);
this.listenPageShowHideHandle();
//计算页面在后台的时间