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

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

Jul 27, 2018 pm 04:35 PM
android iphone javascript

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

1.png

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

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 interval = setInterval(() => {
            let {backGroundTime, staticTime} = this.state;
            this.setState({
                backGroundTime:0
            });
            staticTime = staticTime - backGroundTime - 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);
        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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

小米红米 Note 14 Pro Plus 上市,成为首款配备 Light Hunter 800 摄像头的高通 Snapdragon 7s Gen 3 智能手机 小米红米 Note 14 Pro Plus 上市,成为首款配备 Light Hunter 800 摄像头的高通 Snapdragon 7s Gen 3 智能手机 Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plus 现已正式成为去年 Redmi Note 13 Pro Plus 的直接后继产品(亚马逊售价 375 美元)。正如预期的那样,Redmi Note 14 Pro Plus与Redmi Note 14和Redmi Note 14 Pro一起成为Redmi Note 14系列的主角。李

从早期图片来看,Oppo Find X8 的设计看起来像是苹果 iPhone 16 Pro 和 OnePlus Open 的结合体 从早期图片来看,Oppo Find X8 的设计看起来像是苹果 iPhone 16 Pro 和 OnePlus Open 的结合体 Sep 28, 2024 am 06:04 AM

从历史上看,除了 2018 年 6 月发布的初代 Find X 之外,Oppo 都会在冬末或初春更新其旗舰产品“Find X”系列。为此,Find X7 和 Find X7 Ultra 推出仅六个月多一点在此刻。 H

Gate.io交易平台官方App下载安装地址 Gate.io交易平台官方App下载安装地址 Feb 13, 2025 pm 07:33 PM

本文详细介绍了在 Gate.io 官网注册并下载最新 App 的步骤。首先介绍了注册流程,包括填写注册信息、验证邮箱/手机号码,以及完成注册。其次讲解了下载 iOS 设备和 Android 设备上 Gate.io App 的方法。最后强调了安全提示,如验证官网真实性、启用两步验证以及警惕钓鱼风险,以确保用户账户和资产安全。

安币app官方下载v2.96.2最新版安装  安币官方安卓版 安币app官方下载v2.96.2最新版安装 安币官方安卓版 Mar 04, 2025 pm 01:06 PM

币安App官方安装步骤:安卓需访官网找下载链接,选安卓版下载安装;iOS在App Store搜“Binance”下载。均要从官方渠道,留意协议。

欧易ios版安装包下载链接 欧易ios版安装包下载链接 Feb 21, 2025 pm 07:42 PM

欧易是一款全球领先的加密货币交易所,其官方 iOS 应用程序可为用户提供便捷安全的数字资产管理体验。用户可以通过本文提供的下载链接免费下载欧易 iOS 版安装包,享受以下主要功能:便捷的交易平台:用户可以在欧易 iOS 应用程序上轻松买卖数百种加密货币,包括比特币、以太坊和 Dogecoin。安全可靠的存储:欧易采用先进的安全技术,为用户提供安全可靠的数字资产存储。2FA、生物识别认证等安全措施确保用户资产不受侵害。实时市场数据:欧易 iOS 应用程序提供实时的市场数据和图表,让用户随时掌握加密

iQOO Z9 Turbo+ 作为天玑 9300+ 智能手机首次亮相,电池续航能力'破表” iQOO Z9 Turbo+ 作为天玑 9300+ 智能手机首次亮相,电池续航能力'破表” Sep 26, 2024 am 06:20 AM

Z9 Turbo+ 现已在 Vivo 中国网上商店发售,12GB RAM/256GB 内部存储基本型号的售价为 2,199 元(约合 313 美元),而 RedmiK70 至尊版的起价为 2,599 元(约合 370 美元),配置相同:事实上,它的纽维Q

联想公布 2024 年 Legion Y700 游戏平板电脑的新颜色选项 联想公布 2024 年 Legion Y700 游戏平板电脑的新颜色选项 Sep 29, 2024 am 06:05 AM

联想正准备于9月29日在中国推出2024款Legion Y700。这款新的 Android 游戏平板电脑将与 RedMagic Nova 竞争,该公司已经确认了该设备的几乎所有规格。现在,距离全面开赛还有几个小时

买虚拟币的App苹果怎么安装注册? 买虚拟币的App苹果怎么安装注册? Feb 21, 2025 pm 06:00 PM

摘要:本文旨在指导用户如何在苹果设备上安装和注册虚拟货币交易应用程序。苹果对于虚拟货币应用程序有严格的规定,因此用户需要采取特殊步骤才能完成安装过程。本文将详细阐述所需的步骤,包括下载应用程序、创建账户,以及验证身份。遵循本文的指南,用户可以轻松地在苹果设备上设置虚拟货币交易应用程序并开始交易。

See all articles