cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Empat kira detik, fungsi dicetuskan apabila ia mencapai 0. Jika penalti dikenakan pada masa yang sama, bagaimanakah peristiwa pencetus boleh dilaksanakan sekali sahaja?

Fungsi penalti apabila kira detik ialah 0. Dalam satu kes, apabila keempat-empat kira detik ialah 0, kaedah ajax() akan dicetuskan pada masa yang sama, saya hanya mahu mencetuskannya sekali.
Saya cuba mengisytiharkan kiraan untuk dikira, dan kaedah ajax() tidak akan dilaksanakan jika ia melebihi 1, tetapi ini mungkin tidak melaksanakan kiraan seterusnya kerana ia tidak memenuhi logik bahawa kiraan itu tidak melebihi 1. Apa yang sepatutnya Saya sudi?

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();
  });
});
大家讲道理大家讲道理2723 hari yang lalu745

membalas semua(3)saya akan balas

  • 大家讲道理

    大家讲道理2017-06-12 09:25:23

    JS adalah satu-benang jadi ia tidak akan dicetuskan pada masa yang sama Anda boleh mengekalkan pembolehubah untuk merekodkan masa apabila fungsi tersebut terakhir dilaksanakan Jika selang terlalu dekat, ia tidak akan dilaksanakan untuk kali kedua.

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-12 09:25:23

    Tentukan pembolehubah sebagai status permintaan Lalai adalah palsu, yang bermaksud tiada permintaan pada masa ini Sebelum memulakan permintaan, tentukan sama ada ia benar, ini bermakna permintaan terakhir tidak diteruskan ia kepada benar dan mula melaksanakan permintaan kaedah lengkap Ajax Tetapkan untuk memulihkan status kepada palsu tanpa mengira kejayaan atau kegagalan supaya ia tersedia untuk permintaan seterusnya. Iaitu, gunakan pembolehubah global atau tempatan untuk mengawal keadaan.

    balas
    0
  • 漂亮男人

    漂亮男人2017-06-12 09:25:23

    Cuba ini:

    let loading = false
    $('.clock').each(function () {
        $(this).on('finish', function () {
            if (loading) return
            loading = true
            ajax({
                finish: function () {
                    loading = false
                }
            })
        })
    })

    balas
    0
  • Batalbalas