関数が再度実行を試みる前に、関数の実行が終了するのを待っている問題

StackOverflow https://stackoverflow.com/questions/822653

質問

$(window).scroll();を使用していますユーザーが上部または下部にスクロールしすぎたときに呼び出す関数を指定します。

この関数は実行に2秒かかります。スクロールを続けた場合、最初の関数が完了する前に複数回実行されます。

関数の実行を開始し、その関数を再度実行する前に待機する必要があることを$(window).scroll()関数に伝える方法はありますか?

役に立ちましたか?

解決

すでにスクロール位置を確認しているブール値を設定できます:

checkingPosition = false;
$window.scroll(function() {
   if(checkingPosition) return;
   checkingPosition = true;
   //do stuff
   checkingPosition = false;
});

他のヒント

データをオブジェクトにカプセル化することにより、スコープの問題/混乱を避けるためにこのようなことをします...この場合、jQueryオブジェクト(ウィンドウ要素上):

$(function() {
    $(window).data('checking_scroll',false);
    $(window).scroll(function() {
        if($(this).scrollTop() >= 200 /* or whatever... */) {
            if($(this).data('checking_scroll') === true) {
                return false;
            } else {
                whatever_function();                   
            }     
        }
    });
});

function whatever_function() {
    $(window).data('checking_scroll',true);
    // do all your stuff...
    $(window).data('checking_scroll',false);
}

...しかし、それは私だけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top