以下是我自己編寫的一個代碼,功能是在微信公眾號開發(fā)過程中實現(xiàn)倒計時的。效果如下,訂單已提交,請在2分57秒內(nèi)完成支付。純代碼解析。
開始的思路沒有考慮頁面在后臺運行以及鎖屏等情況。代碼如下:
let interval = setInterval(() => { let {staticTime} = this.state; staticTime = staticTime - 1; if (staticTime <= 0) { clearInterval(interval); this.setState({ tip:'支付超時', staticTime:0 }); return; } let minutes = parseInt(staticTime/60); let Seconds = staticTime%60; let tip = '訂單已提交,請在'+minutes+'分'+Seconds+'秒內(nèi)完成支付'; this.setState({ tip:tip, staticTime:staticTime }); }, 1000); 后來測試發(fā)現(xià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:'支付超時', staticTime:0, }); return; } let minutes = parseInt(staticTime/60); let Seconds = staticTime%60; let tip = '訂單已提交,請在'+minutes+'分'+Seconds+'秒內(nèi)完成支付'; 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 == '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 ); });
}
改造之后發(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. **解決方案:** 訂單生成的時候我們記錄下這個時間為A, 時間間隔為B(3分鐘內(nèi)需要付款,B為3*60*1000),C為現(xiàn)在的時間。我們使用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<=0){ clearInterval(interval); this.setState({ tip:'支付超時', isFalse:true }); return; } let minutes = parseInt(sub/60); let Seconds = sub%60; let tip = '訂單已提交,請在'+minutes+'分'+Seconds+'秒內(nèi)完成支付'; console.log(tip); this.setState({ tip:tip, isFalse:false }); },1000);
apache php mysql
相關(guān)文章:
微信公眾號授權(quán)設(shè)置,微信公眾授權(quán)
相關(guān)視頻:
以上是微信公眾號開發(fā),實現(xiàn)倒計時的一個功能(純代碼)的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

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

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

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

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

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

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

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

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

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

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

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

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

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