javascript - 四個倒數計時,到0時觸發函數,如果同時處罰怎麼讓觸發事件只執行一次?
大家讲道理
大家讲道理 2017-06-12 09:23:23
0
3
709

倒數計時為0時處罰函數,有一種情況是當四個倒數都為0時會同時觸發ajax()方法,這種情況我只想觸發一次,該怎麼做?
我試過宣告一個count去計數,超過1就不執行ajax()方法,但是這樣有可能後面的倒數都不執行的,因為不滿足count不超過1的邏輯,該怎麼做呢?

html
<span class="clock">4:00</span>//倒计时是循环的,到0后恢复为4分钟,其他一样
<span class="clock">3:00</span>
<span class="clock">2:00</span>
<span class="clock">1:00</span>

js
$('.clock').each(function(elem,index){
  $(this).on('finish',function(){//倒计时为0时触发ajax()方法
    ajax();
  });
});
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(3)
大家讲道理

JS 單執行緒所以不會同時觸發,你可以維護一個變數記錄上次執行函數的時間,隔太近則不執行第二遍。

伊谢尔伦

定義一個變數作為請求狀態,預設為false,表示目前無請求,請求開始前判斷是否為true,是則說明上次請求未仍在繼續,否則設為true,並開始執行請求,Ajax的complete 方法設定無論成功與否都還原該狀態為false,以便下次請求可用。也就是說,用一個全域或局部變數控制狀態。

漂亮男人

嘗試這樣:

let loading = false
$('.clock').each(function () {
    $(this).on('finish', function () {
        if (loading) return
        loading = true
        ajax({
            finish: function () {
                loading = false
            }
        })
    })
})
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!