【摘要】
以下是我自己编写的一个代码,功能是在微信公众号开发过程中实现倒计时的。效果如下,订单已提交,请在2分57秒内完成支付。纯代码解析。开始的思路没有考虑页面在后台运行以及锁屏等情况。代码如下:let interval = setInterval(() => {
let {staticTime}... 【做网站,网站建设公司,企业建站优化,小程序商城制作,温州小程序开发,温州微信公众号,平阳做网站,平阳网站建设公司,平阳小程序商城制作,平阳小程序开发,平阳微信公众号,昆阳做网站,昆阳网站建设公司,昆阳小程序商城制作,昆阳小程序开发,昆阳微信公众号,鳌江做网站,鳌江网站建设公司,鳌江小程序商城制作,鳌江小程序开发,鳌江微信公众号】...
以下是我自己编写的一个代码,功能是在微信公众号开发过程中实现倒计时的。效果如下,订单已提交,请在2分57秒内完成支付。纯代码解析。开始的思路没有考虑页面在后台运行以及锁屏等情况。代码如下:let interval = setInterval(() => {
let {staticTime} = this.state;
staticTime = staticTime - 1;
if (staticTime {
let {backGroundTime, staticTime} = this.state;
this.setState({
backGroundTime:0
});
staticTime = staticTime - backGroundTime - 1;
if (staticTime {let {backGroundTime} = this.state;
let start, end;
let self = this;
document.addEventListener("visibilitychange", function() {
if(document.visibilityState == 'hidden'){
start = new Date().getTime();
}else if(document.visibilityState == 'visible'){
end = new Date().getTime();
backGroundTime = Math.floor((end - start)/1000);
self.setState({backGroundTime});
console.log('时间差:', backGroundTime);
}
console.log( document.visibilityState );
});}改造之后发先问题依然存在。原因是:
You cannot continue to run javascript while the iPhone is sleeping using setTimeout(), however.When the phone is put to sleep, Safari will kill any running javascript processes using setTimeout(). Check out this answer here for some reasons why this is done.
**解决方案:**
订单生成的时候我们记录下这个时间为A, 时间间隔为B(3分钟内需要付款,B为3*60*1000),C为现在的时间。我们使用setInterval 每个1秒读取一下时间。那么倒计时时间 == A+B-C,代码如下
let interval = setInterval(()=>{
let {orderTime, staticTime} = this.state;
let nowTime = Date.now();
let sub = Math.floor((orderTime + staticTime - nowTime)/1000);
console.log('sub',sub);
if(sub [
温州做微信公众号]