亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 微信小程序 微信開發(fā) 微信公眾號(hào)開發(fā),實(shí)現(xiàn)倒計(jì)時(shí)的一個(gè)功能(純代碼)

微信公眾號(hào)開發(fā),實(shí)現(xiàn)倒計(jì)時(shí)的一個(gè)功能(純代碼)

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

以下是我自己編寫的一個(gè)代碼,功能是在微信公眾號(hào)開發(fā)過程中實(shí)現(xiàn)倒計(jì)時(shí)的。效果如下,訂單已提交,請(qǐng)?jiān)?分57秒內(nèi)完成支付。純代碼解析。

1.png

開始的思路沒有考慮頁面在后臺(tái)運(yùn)行以及鎖屏等情況。代碼如下:

let interval = setInterval(() => {
            let {staticTime} = this.state;
            staticTime = staticTime - 1;
            if (staticTime <= 0) {
                clearInterval(interval);
                this.setState({
                    tip:&#39;支付超時(shí)&#39;,
                    staticTime:0
                });
                return;
            }
            let minutes = parseInt(staticTime/60);
            let Seconds = staticTime%60;
            let tip = &#39;訂單已提交,請(qǐng)?jiān)?amp;#39;+minutes+&#39;分&#39;+Seconds+&#39;秒內(nèi)完成支付&#39;;
            this.setState({
                tip:tip,
                staticTime:staticTime 
            });
        }, 1000);
后來測(cè)試發(fā)現(xiàn)鎖屏或者把頁面留在后臺(tái),計(jì)算就不對(duì),于是把代碼進(jìn)行了如下改造。



  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;支付超時(shí)&#39;,
                    staticTime:0,
                });
                return;
            }
            let minutes = parseInt(staticTime/60);
            let Seconds = staticTime%60;
            let tip = &#39;訂單已提交,請(qǐng)?jiān)?amp;#39;+minutes+&#39;分&#39;+Seconds+&#39;秒內(nèi)完成支付&#39;;
            this.setState({
                tip:tip,
                staticTime:staticTime,
            });
        }, 1000);
        this.listenPageShowHideHandle();
    
     //計(jì)算頁面在后臺(tái)的時(shí)間

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;時(shí)間差:&#39;, backGroundTime);
    }
    console.log( document.visibilityState );
});

}

改造之后發(fā)先問題依然存在。原因是:
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.

**解決方案:**
訂單生成的時(shí)候我們記錄下這個(gè)時(shí)間為A, 時(shí)間間隔為B(3分鐘內(nèi)需要付款,B為3*60*1000),C為現(xiàn)在的時(shí)間。我們使用setInterval 每個(gè)1秒讀取一下時(shí)間。那么倒計(jì)時(shí)時(shí)間 == 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;支付超時(shí)&#39;,
                isFalse:true
            });
            return;
        }
        let minutes = parseInt(sub/60);
        let Seconds = sub%60;
        let tip = &#39;訂單已提交,請(qǐng)?jiān)?amp;#39;+minutes+&#39;分&#39;+Seconds+&#39;秒內(nèi)完成支付&#39;;
        console.log(tip);
        this.setState({
            tip:tip,
            isFalse:false
        });
    },1000);

apache php mysql

相關(guān)文章:

微信公眾號(hào)授權(quán)設(shè)置,微信公眾授權(quán)

微信公眾號(hào)點(diǎn)擊菜單即可打開并登錄微站的實(shí)現(xiàn)方法

相關(guān)視頻:

傳智、黑馬微信公眾平臺(tái)開發(fā)視頻教程

以上是微信公眾號(hào)開發(fā),實(shí)現(xiàn)倒計(jì)時(shí)的一個(gè)功能(純代碼)的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何在iPhone上創(chuàng)建一個(gè)聯(lián)系人組 如何在iPhone上創(chuàng)建一個(gè)聯(lián)系人組 Jul 13, 2025 am 01:17 AM

iPhone不支持在通訊錄應(yīng)用中直接創(chuàng)建聯(lián)系人組,但可通過以下方法實(shí)現(xiàn)類似功能:1.在通訊錄應(yīng)用中使用“群組”功能,點(diǎn)擊“編輯”>“添加群組”創(chuàng)建自定義群組;2.通過編輯每個(gè)聯(lián)系人將其加入對(duì)應(yīng)群組;3.若需群發(fā)消息,可在信息應(yīng)用中新建多人對(duì)話實(shí)現(xiàn);4.使用iCloud或Gmail同步標(biāo)簽化分組,便于電腦端管理大量聯(lián)系人。這些方法結(jié)合使用可高效管理聯(lián)系人群組。

如何檢查iPhone是否已解鎖 如何檢查iPhone是否已解鎖 Jul 15, 2025 am 01:17 AM

TocheckifaniPhoneisunlocked,1)gotoSettings>Cellular>CellularDataOptionsandlookforlabelslike“Unlocked”or“NoSIMrestrictions,”2)insertadifferentcarrier’sactiveSIMcardandseeifthephoneacceptsit,3)usetheIMEInumberononlinetoolslikeIMEI.infotocheckunlo

如何查看iPhone Strain-in Value 如何查看iPhone Strain-in Value Jul 13, 2025 am 01:13 AM

確定iPhone的折舊價(jià)值需考慮多個(gè)因素并比較不同平臺(tái)。2.首選蘋果官方換購(gòu)計(jì)劃,其流程簡(jiǎn)單透明,但最終估值需以設(shè)備實(shí)際狀況為準(zhǔn)。3.第三方網(wǎng)站如Gazelle、Swappa等可能提供更高報(bào)價(jià),但需注意描述真實(shí)狀況并避開收費(fèi)陷阱。4.影響價(jià)值的核心因素包括型號(hào)與存儲(chǔ)容量、設(shè)備狀況、運(yùn)營(yíng)商鎖定狀態(tài)等,小問題也可能影響報(bào)價(jià)。5.若追求更高回報(bào)可選擇私下出售,但需權(quán)衡時(shí)間成本與交易風(fēng)險(xiǎn)。

如何將聯(lián)系人從一種iPhone轉(zhuǎn)移到另一種iPhone 如何將聯(lián)系人從一種iPhone轉(zhuǎn)移到另一種iPhone Jul 12, 2025 am 02:36 AM

換新iPhone時(shí)遷移聯(lián)系人可通過三種方法完成:第一,使用iCloud同步最省心,確保舊機(jī)已開啟iCloud通訊錄備份,新機(jī)登錄同一賬號(hào)并開啟同步即可;第二,用AirDrop適合少量聯(lián)系人傳輸,兩臺(tái)手機(jī)設(shè)置AirDrop可見性后通過共享按鈕發(fā)送接收;第三,借助電腦中轉(zhuǎn),Mac或Windows均可,通過Finder或iTunes同步聯(lián)系人并替換或合并數(shù)據(jù)。選擇適合自己的方式并注意賬號(hào)與權(quán)限設(shè)置即可輕松完成遷移。

蘋果手機(jī)怎么買穩(wěn)定幣 蘋果手機(jī)在哪買穩(wěn)定幣 蘋果手機(jī)怎么買穩(wěn)定幣 蘋果手機(jī)在哪買穩(wěn)定幣 Jul 24, 2025 pm 09:18 PM

在蘋果手機(jī)上購(gòu)買USDT等穩(wěn)定幣需通過海外Apple ID下載合規(guī)交易所App并完成認(rèn)證后進(jìn)行交易,具體步驟如下:1. 使用非大陸地區(qū)Apple ID登錄App Store;2. 下載推薦平臺(tái)如歐易(OKX)、幣安(Binance)、火幣(HTX)、Gate.io或KuCoin;3. 完成注冊(cè)及身份認(rèn)證(KYC);4. 進(jìn)入“買幣”或“C2C/P2P交易”頁面選擇USDT;5. 根據(jù)支付方式篩選商家并下單;6. 通過支付寶、微信或銀行卡付款并確認(rèn)交易;7. 等待商家放幣至賬戶,整個(gè)過程完成后即可

如何在iPhone上清除RAM 如何在iPhone上清除RAM Jul 12, 2025 am 02:30 AM

iPhone的RAM無法手動(dòng)清理,但可通過以下方法釋放內(nèi)存提升流暢度:1.關(guān)閉后臺(tái)應(yīng)用:雙擊Home鍵或從底部上滑暫停關(guān)閉卡片;2.定期重啟手機(jī):每周一次刷新系統(tǒng)狀態(tài);3.減少后臺(tái)刷新:進(jìn)入設(shè)置→通用→后臺(tái)App刷新限制應(yīng)用數(shù)量;4.避免同時(shí)運(yùn)行多個(gè)高資源應(yīng)用,分階段使用以減輕內(nèi)存壓力。這些操作能有效緩解iPhone內(nèi)存緊張導(dǎo)致的卡頓問題。

忘記iPhone密碼 忘記iPhone密碼 Jul 26, 2025 am 09:53 AM

若忘記iPhone密碼,可嘗試以下方法:1.使用iTunes/Finder進(jìn)入恢復(fù)模式恢復(fù)設(shè)備(需已連接過電腦);2.若開啟“查找我的iPhone”,可通過iCloud抹除設(shè)備;3.聯(lián)系A(chǔ)pple客服尋求協(xié)助(需提供購(gòu)機(jī)憑證)。以上方法中前兩者會(huì)清除數(shù)據(jù),建議日后定期備份并啟用查找功能。

如何在iPhone上使用文件應(yīng)用程序 如何在iPhone上使用文件應(yīng)用程序 Jul 19, 2025 am 01:48 AM

使用iPhone的文件App進(jìn)行文件管理非常簡(jiǎn)單,適合日常任務(wù)。1.組織文件和文件夾:可通過“新建文件夾”功能創(chuàng)建文件夾,并支持重命名、移動(dòng)或復(fù)制文件,還可按名稱、日期等排序。2.訪問iCloud和其他云服務(wù):可連接iCloudDrive、GoogleDrive、Dropbox等,通過“瀏覽>位置>編輯”來管理顯示的服務(wù),并能直接保存文件至云存儲(chǔ)。3.打開和分享來自其他應(yīng)用的文件:通過底部分享圖標(biāo)選擇應(yīng)用打開文件,也可通過郵件、信息或AirDrop共享文件。總之,雖然功能有限,但其基

See all articles