javascript - 四个倒计时,到0时触发函数,如果同时处罚怎么让触发事件只执行一次?
大家讲道理
大家讲道理 2017-06-12 09:23:23
0
3
742

倒计时为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
            }
        })
    })
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板