JavaScript ループで遅延実行を実装するにはどうすればよいですか?
P粉680000555
P粉680000555 2023-08-20 14:12:51
0
2
508
<p><code>while</code> ループに遅延/スリープを追加したいです: </p> <p>次のことを試しました: </p> <pre class="brush:php;toolbar:false;">alert('hi'); for(var start = 1; start <10; start ) { setTimeout(関数() { アラート('こんにちは'); }, 3000); }</pre> <p>最初のケースのみが正しいです。<code>alert('hi')</code> を表示した後、3 秒待ってから、<code>alert('hello' )< を表示します。 /code> ですが、その後 <code>alert('hello')</code> が繰り返し表示されます。 </p> <p>私が望むのは、<code>alert('hello')</code> を表示してから 3 秒後、<code>alert('hello')<を表示するまでさらに 3 秒待つ必要があるということです。 ;/code> など。 </p>
P粉680000555
P粉680000555

全員に返信(2)
P粉718165540

ES7 以降、waitloop:

を実行するより良い方法があります。 リーリー

エンジンが await セクションに到達すると、タイムアウトを設定し、async 関数 の実行を一時停止します。その後、タイムアウトが完了すると、その時点で実行が続行されます。これは、(1) ネストされたループ、(2) 条件、(3) ネストされた関数を延期できるため、非常に便利です。

リーリー

MDN の参考資料

ES7 は現在 NodeJS と最新のブラウザーでサポートされていますが、どこでも実行できるように

BabelJS でトランスパイルすることもできます。

いいねを押す +0
P粉659518294

setTimeout() この関数はノンブロッキングで、すぐに戻ります。したがって、ループは非常に高速に反復され、3 秒のタイムアウトが立て続けにトリガーされます。そのため、最初のアラートは 3 秒後にポップアップし、他のすべてのアラートは遅延なく継続して表示されます。

次のようなコードを使用するとよいでしょう:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート