[解決済み] setTimeoutかsetIntervalか?
2022-03-21 04:17:57
質問
私が知る限り、これら2つのjavascriptは同じように動作します。
オプションA
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
オプションB
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
を使うのとでは、何か違いがあるのでしょうか? セットタイムアウト と setInterval ?
解決するには?
これらは基本的に同じことをしようとしていますが
setInterval
の方がより正確です。
setTimeout
というアプローチは
setTimeout
は1000ms待ち、関数を実行した後、再度タイムアウトを設定します。つまり、待ち時間は実際には1000ミリ秒より少し長いのです(関数の実行に長い時間がかかる場合はもっと長い)。
と思われるかもしれませんが
setInterval
を実行します。
まさに
は1000msごとに、重要なのは
setInterval
JavaScript はマルチスレッド言語ではないので、スクリプトの他の部分が実行されている場合、その部分が終了するまで間隔を空けなければならないからです。
で このフィドル を見ると、タイムアウトが遅れていく一方で、間隔はほぼ常にほぼ1コール/秒(これはスクリプトがやろうとしていること)であることがよくわかります。もし上部のspeed変数を20のような小さなものに変えると(つまり、1秒間に50回実行しようとする)、間隔は1秒間に平均50回の反復に全く到達しないことになる。
遅延はほとんどの場合無視できますが、本当に精密なものをプログラミングしている場合は 自動調整タイマ (タイムアウトベースのタイマーで、発生した遅れを常に調整するものです。)
関連
-
Vueの要素ツリーコントロールに破線を追加する説明
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] JavaScriptで2つの日付を比較する
-
[解決済み] JavaScriptで特定の範囲のランダムな整数を生成する?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
JavaScriptの配列共通メソッド解説
-
Vueの「データを聴く」原則を解説
-
[解決済み] テスト
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み】「setInterval」対「setTimeout」【重複あり