首頁 微信小程式 微信開發 微信公眾號開發,實現倒數計時的一個功能(純程式碼)

微信公眾號開發,實現倒數計時的一個功能(純程式碼)

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

以下是我自己寫的一個程式碼,功能是在微信公眾號開發過程中實現倒數計時的。效果如下,訂單已提交,請在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 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.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 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」系列。一點在此刻。 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”下載。均要從官方渠道,留意協議。

在使用PHP調用支付寶EasySDK時,如何解決'Undefined array key 'sign'”報錯問題? 在使用PHP調用支付寶EasySDK時,如何解決'Undefined array key 'sign'”報錯問題? Mar 31, 2025 pm 11:51 PM

問題介紹在使用PHP調用支付寶EasySDK時,按照官方提供的代碼填入參數後,運行過程中遇到報錯信息“Undefined...

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 競爭,該公司已經確認了該設備的幾乎所有規格。現在,距離全面開賽還有幾個小時

歐易ios版安裝包下載鏈接 歐易ios版安裝包下載鏈接 Feb 21, 2025 pm 07:42 PM

歐易是一款全球領先的加密貨幣交易所,其官方 iOS 應用程序可為用戶提供便捷安全的數字資產管理體驗。用戶可以通過本文提供的下載鏈接免費下載歐易iOS 版安裝包,享受以下主要功能:便捷的交易平台:用戶可以在歐易iOS 應用程序上輕鬆買賣數百種加密貨幣,包括比特幣、以太坊和Dogecoin。安全可靠的存儲:歐易採用先進的安全技術,為用戶提供安全可靠的數字資產存儲。 2FA、生物識別認證等安全措施確保用戶資產不受侵害。實時市場數據:歐易 iOS 應用程序提供實時的市場數據和圖表,讓用戶隨時掌握加密

See all articles