0

要素のグループで実行される関数を使用して、各要素を更新しています。

更新が完了したら、シリアル化機能を実行する必要があります。

現在、シリアル化は何度も(要素の数)実行されているので、1回だけ実行したいと思います。

タイマー変数を宣言して、毎回無効にしてみましたが、最後に:

    clearTimeout(timer); 
    timer = setTimeout(function(){console.log("tester")}, 5000);
    return this;

しかし、これは機能していないようで、関数がタイムアウトしている間、複数回実行されます。

これを修正する方法について何かアイデアはありますか?

ありがとう!

4

1 に答える 1

2

また、問題は他の場所にもあると思います。setTimeoutは宣言によって1回だけ実行されるため、複数回発生する場合は、何度も宣言されていることが原因である可能性があります。

親関数を必要以上に実行していないかどうかを確認できますか?これを解消するには、関数ごとにconsole.log()するカウンターを設定します。ツリーの3/4レベルに戻り、2回以上カウントされていないかどうかを確認します。

イベントアタッチメソッドを何かからjQueryonまたはbindに変更することも、ヘルパーになる可能性があります。

編集:あなたの質問に厳密に答えるために:

var counter = 0; //should be out of your function scope

setTimeout(function(){
     counter +=1;
     if (counter == 1){
     //yourFunction()
}
},5000)
于 2012-11-26T12:21:32.733 に答える