javascript - Quatre comptes à rebours, la fonction est déclenchée lorsqu'elle atteint 0. Si des pénalités sont imposées en même temps, comment l'événement déclencheur peut-il être exécuté une seule fois ?
大家讲道理
大家讲道理 2017-06-12 09:23:23
0
3
739

Fonction de pénalité lorsque le compte à rebours est à 0. Dans un cas, lorsque les quatre comptes à rebours sont à 0, la méthode ajax() sera déclenchée en même temps. Dans ce cas, je ne souhaite la déclencher qu'une seule fois.
J'ai essayé de déclarer un décompte, et la méthode ajax() ne sera pas exécutée si elle dépasse 1, mais cela risque de ne pas exécuter le compte à rebours suivant car elle ne satisfait pas à la logique selon laquelle le décompte ne dépasse pas 1. Que devrait Je fais?

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

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

répondre à tous(3)
大家讲道理

JS est monothread, il ne sera donc pas déclenché en même temps. Vous pouvez conserver une variable pour enregistrer l'heure à laquelle la fonction a été exécutée pour la dernière fois. Si l'intervalle est trop proche, elle ne sera pas exécutée une seconde fois.

伊谢尔伦

Définissez une variable comme statut de la demande. La valeur par défaut est false, ce qui signifie qu'il n'y a actuellement aucune demande, déterminez si elle est vraie. Si c'est le cas, cela signifie que la dernière demande ne continue pas. définissez-le sur true et commencez à exécuter la méthode complète d'Ajax Set pour restaurer le statut sur false quel que soit le succès ou l'échec afin qu'il soit disponible pour la prochaine requête. Autrement dit, utilisez une variable globale ou locale pour contrôler l'état.

漂亮男人

Essayez ceci :

let loading = false
$('.clock').each(function () {
    $(this).on('finish', function () {
        if (loading) return
        loading = true
        ajax({
            finish: function () {
                loading = false
            }
        })
    })
})
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal