黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信公众号开发,实现倒计时的一个功能(纯代码)

来源:黔优媒体网   时间:2024-09-19

以下是我自己编写的一个代码,功能是在微信公众号开发过程中实现倒计时的。效果如下,订单已提交,请在2分57秒内完成支付。纯代码解析。

开始的思路没有考虑页面在后台运行以及锁屏等情况。代码如下:

let interval = setInterval(() = {
 let {staticTime} = this.state;
 staticTime = staticTime - 1;
 if (staticTime = 0) {
 clearInterval(interval);
 this.setState({
 tip: #39;支付超时 #39;,
 staticTime:0
 return;
 let minutes = parseInt(staticTime/60);
 let Seconds = staticTime%60;
 let tip = #39;订单已提交,请在 #39;+minutes+ #39;分 #39;+Seconds+ #39;秒内完成支付 #39;;
 this.setState({
 tip:tip,
 staticTime:staticTime 
 }, 1000);
后来测试发现锁屏或者把页面留在后台,计算就不对,于是把代码进行了如下改造。

let Seconds = staticTime%60; let tip = #39;订单已提交,请在 #39;+minutes+ #39;分 #39;+Seconds+ #39;秒内完成支付 #39;; this.setState({ tip:tip, staticTime:staticTime, }, 1000); this.listenPageShowHideHandle(); //计算页面在后台的时间

listenPageShowHideHandle = () =>{

let {backGroundTime} = this.state;
let start, end;
let self = this;
document.addEventListener( visibilitychange , function() {
 if(document.visibilityState == #39;hidden #39;){
 start = new Date().getTime();
 }else if(document.visibilityState == #39;visible #39;){
 end = new Date().getTime();
 backGroundTime = Math.floor((end - start)/1000);
 self.setState({backGroundTime});
 console.log( #39;时间差: #39;, 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( #39;sub #39;,sub);
 if(sub =0){
 clearInterval(interval);
 this.setState({
 tip: #39;支付超时 #39;,
 isFalse:true
 return;
 let minutes = parseInt(sub/60);
 let Seconds = sub%60;
 let tip = #39;订单已提交,请在 #39;+minutes+ #39;分 #39;+Seconds+ #39;秒内完成支付 #39;;
 console.log(tip);
 this.setState({
 tip:tip,
 isFalse:false
 },1000);

apache php mysql

相关文章:

微信公众号授权设置,微信公众授权

微信公众号点击菜单即可打开并登录微站的实现方法

相关视频:

传智、黑马微信公众平台开发视频教程

以上就是微信公众号开发,实现倒计时的一个功能(纯代码)的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信公众号开发,实现倒计时的一个功能(纯代码);欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)
此操作需要登录,请先登录~
免费注册会员,尽享国内领先平台!