29

wait()JavaScript関数を作成したい。

何を編集すればよいですか?

function wait(waitsecs) {
    setTimeout(donothing(), 'waitsecs');
}

function donothing() {
    //
}

4

2 に答える 2

62

Javascript はスレッド化されていないため、「待機」するとページ全体がフリーズします (おそらく、ブラウザはスクリプトの実行を完全に停止します)。

問題に具体的に対処するにdonothingは、setTimeout呼び出しの後の括弧を削除しwaitsecs、文字列ではなく数値を作成する必要があります。

console.log('before');
setTimeout(donothing,500); // run donothing after 0.5 seconds
console.log('after');

しかし、それは実行を停止しません。「後」は、関数が実行される前に記録されます。

適切に待機するには、無名関数を使用できます。

console.log('before');
setTimeout(function(){
    console.log('after');
},500);

すべての変数は「後」セクションに残ります。これらを連鎖させるべきではありません。連鎖させる必要がある場合は、プログラムをどのように構築しているかを確認する必要があります。また、ループする必要がある場合はsetInterval/を使用することもできます。clearInterval

于 2013-03-29T00:31:53.027 に答える
5

編集するのではなく、完全に廃棄する必要があります。

一定時間実行を停止しようとすると、ブラウザがロックされ、応答なしの状態に切り替わります。あなたができる唯一のことは、setTimeout正しく使用することです。

于 2013-03-29T00:26:19.983 に答える