0

タイムアウトでいくつかの関数を実行しようとしています。これはクラスのコードです:

while($$('.visos_prekes ul li.simple').length > 0){
    setTimeout(this.destroyByOne(), 5000);
}

destroyByOne: function(){
    $$('.visos_prekes ul li.simple').each(function(e, key){
        e.destroy();
        if(key > 16){
            return true;
        }
    });
},

しかし、この関数はタイムアウトなしで実行されます。私は何を間違っていますか?

4

2 に答える 2

2

この行setTimeout(this.destroyByOne(), 5000);は次のようになります。

setTimeout(this.destroyByOne, 5000);

関数呼び出しの結果ではなく、関数ハンドラー別名変数を渡す必要があるためです( )。this.destroyByOne()

于 2013-03-29T08:06:22.387 に答える
1

これは、setTimeout関数の正しい構文です。

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = window.setTimeout(code, delay);

func、 delay ミリ秒後に実行する関数 (関数の名前) codeであり、代替構文では、 delay ミリ秒後に実行するコードの文字列です!

次のいずれかで setTimeout を使用できます。

setTimeout(this.destroyByOne, 5000);
setTimeout("this.destroyByOne()", 5000);
于 2013-03-29T08:14:21.953 に答える