在vue組件中設置定時器和清除定時器


由於項目中難免會碰到需要實時刷新,無論是獲取短信碼,還是在支付完成后輪詢獲取當前最新支付狀態,這時就需要用到定時器。
但是,定時器如果不及時合理地清除,會造成業務邏輯混亂甚至應用卡死的情況,這個時就需要清除定時器。
某個頁面中啟動定時器后,一定要在頁面關閉時將定時器清除掉。即在頁面卸載(關閉)的生命周期函數里,清除定時器。

<template>
    <view>
        <button @click="getStatus">{{ buttonText }}</button>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                timer: null, //首先我在data函數里面進行定義定時器名稱:
                buttonText : '輪詢獲取訂單支付狀態',
                timerNum: 60 // 設置定時器時間
            }
        },
        methods: {
            getStatus() {
                this.loading(); // 啟動定時器
                this.timer = setInterval(() => {  //創建定時器
                    if (this.timerNum === 0) { // 設置的定時器時間為0后執行的操作
                        this.timer && this.clearTimer(); // 關閉定時器
                        window.open('https://nav.imaring.com/', '_blank'); // 在新窗口打開程序員網址導航
                    } else {
                        this.loading();
                    }
                }, 1000);
            },
            loading() { // 啟動定時器
                this.timerNum -= 1; // 定時器減1
                this.text = '獲取中(' + this.timerNum + ')';
            },
            clearTimer() {//清除定時器
                clearInterval(this.timer);
                this.timer = null;
            }
        },
        // 最后在beforeDestroy()生命周期內清除定時器:
        beforeDestroy() {
            clearInterval(this.timer);        
            this.timer = null;
        }
    }
</script>

小編推薦:程序員網址導航

作為一名碼農,隨着平時工作的需要,這里收集了國內外很多優秀網站,這其中包括在線工具、在線運行、免費接口、在線資源、在線學習、技術論壇、技術博客等等,滿足一般程序員日常需求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM