1.スリープ機能JavaScript は単一のスレッドで実行され、組み込みの sleep 関数がありません。ここでは、sleep を使用して実行を遅延させる効果をシミュレートします。 スリープ機能を使用して、信号コードを実装します。赤色の信号が 2 秒間、黄色の信号が 1 秒間、緑色の信号が 3 秒間点灯し、色が周期的に変化します。 2.タイムアウトを設定するsetTimeout を直接使用して sleep() を実装する方法は互換性が最も高くなりますが、コールバック関数を使用した実装方法ではコードの可読性と保守性が低下します。 // タイムアウトを設定する let fun = () => console.log('time out'); sleep = function(fun,time){ とする タイムアウトを設定します(()=>{ 楽しい(); }、時間); } 睡眠(楽しい、2000); タイムアウトの設定 setTimeout は最も基本的な実装方法です。コードは次の通りで、再帰を使用して周期的な色の変更を実装します。 関数 changeColor(色) { console.log('信号機', 色); } 関数main() { 色を変更します('赤'); タイムアウトを設定します(()=>{ 色を変更します('黄色'); タイムアウトを設定する(() => { 色を変更します('緑'); setTimeout(メイン、2000); }, 1000); }, 2000); } 主要(); 3. 約束ES6 構文では、Promise は sleep メソッドを非同期に実装する方法です。Promise メソッドを使用すると、関数コールバックの使用を回避しながら、 sleep 実装メソッドをエレガントに構築できます。 // 約束 let fun = () => console.log('time out'); sleep2 = (time) => new Promise((resolve) => { とします。 setTimeout(解決、時間) }) sleep2(2000).その後(楽しい); 約束 Promise を使用して次の色の変更を書き込み、最後に再帰を使用してループを完了します。 setTimeout の代わりに promise を使用し、チェーン呼び出しと then を使用して軽量変換を実現します。 then は promise オブジェクトを返します。このオブジェクトが解決された状態にある場合、 then を継続的に呼び出すことができます。 const traffic_light=(色,持続時間)=>{ 新しい Promise を返します ((resolve,reject)=>{ console.log('信号機', 色); タイムアウトを設定します(()=>{ 解決する() }、間隔) }) } 定数main=()=>{ Promise.resolve() .then(()=>{ 戻り値: traffic_light('red',3000) }) .then(()=>{ 戻り値: traffic_light('yellow',1000) }) .then(()=>{ 戻り値: traffic_light('green',2000) }) .then(()=>{ 主要(); }) } 主要() 4. 非同期待機async await は、実際には generator と promise の構文糖衣です。非同期呼び出しを実装するための同期プログラミング メソッドを提供し、sleep 関数のセマンティクスもサポートします。また、sleep を実装するためによく使用される方法でもあります。 // 非同期待機 非同期関数 wait(time){ sleep2(時間)を待ちます。 楽しい(); } 待機(3000); 非同期待機の使用 async await を使用すると Promise の .then.then.then の連続を回避でき、再帰の必要がなくなります。while(true) を使用してループを実装できます。 関数 sleep(期間) { 新しいPromiseを返します(resolve => { setTimeout(解決、期間); }) } 非同期関数changeColor(色, 期間) { console.log('信号機', 色); スリープを待機します(期間); } 非同期関数main() { (真)の間{ 'red' という値の変化を待ちます。 色の変更を待ちます('黄色', 1000); 色の変更を待ちます('green', 3000); } } 主要(); 5. 1秒後に出力1、2秒後に出力2、3秒後に出力3コンソールにログを出力します。 const sleep = (タイムアウト) => { 新しいPromise((resolve)=>{ を返す タイムアウトを設定します(()=>{ 解決する(); }、 タイムアウト) }) } 定数main = async()=>{ スリープ(1000)を待機します。 ログ(1); 眠りを待つ(2000) ログ(2); スリープを待機します(3000); ログ(3); } 参考記事:信号機 信号機 JavaScript のスリープ関数の使い方に関するこの記事はこれで終わりです。JavaScript のスリープ関数に関するより関連性の高い内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MLSQL スタックでストリームのデバッグを簡単にする方法
>>: Linux を使用して時間指定ファイルが占有するディスク容量を計算する方法
目次問題1: 破壊1. 破壊する方法2. いつ破壊するか2.1 解決策1: route.queryを...
noscript の定義と使用法noscript 要素は、スクリプトが実行されない場合の代替コンテン...
CSS でテキストを中央揃えにするプロパティは非常に簡単に実現できます。text-align:cen...
目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...
目次必要:機能ポイントレンダリング実装のアイデア具体的なコード(react\taro3.0)特定のコ...
目次プロジェクトディレクトリDockerファイルファイルの展開画像を生成するコンテナを起動するウェブ...
1 インストールリソースパッケージmysql-8.0.18-1.el7.x86_64.rpm-bun...
textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...
この記事では、モバイルモーダルボックス効果を実現するためのJavaScriptの具体的なコードを参考...
nginx Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー...
目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...
場合によっては、リモート マシンでいくつかのコマンドを実行する必要があることがあります。これが時々行...
目次CSS3 ボックスモデルa. CSS3 フィルターb. CSS3 calc関数c. CSS3 ト...
MySQL 5.5 の場合、文字セットが設定されていない場合、MySQL のデフォルトの文字セットは...
目次1. classList属性2. 実用化以前の JavaScript では、最初にクラス属性を取...