[解決済み] なぜsetTimeout()は大きなミリ秒の遅延値に対して "break "するのですか?
2022-08-05 12:27:02
質問
に大きなミリ秒の値を渡すと、予期しない動作に出くわしました。
setTimeout()
. 例えば
setTimeout(some_callback, Number.MAX_VALUE);
と
setTimeout(some_callback, Infinity);
両方の原因
some_callback
がほとんど即座に実行され、あたかも私が
0
を渡したかのように、ほとんど即座に実行されます。
なぜこのようなことが起こるのでしょうか?
どのように解決するのですか?
これは、setTimeout が遅延を格納するために 32 ビットの int を使用しているためで、許容される最大値は次のようになります。
2147483647
試しに
2147483648
を実行すると、問題が発生します。
私は、これがJSエンジンの内部例外を何らかの形で発生させ、関数がまったく発生しないのではなく、すぐに発生する原因になっていると推測しているのです。
関連
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] 配列の反復処理に "for...in "を使用するのは、なぜ良くないのでしょうか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] setTimeout(fn, 0)が役に立つことがあるのはなぜですか?
-
[解決済み] parseInt(1/0, 19)はなぜ18を返すのですか?
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] Node.jsのES6クラスをrequireで作る
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] javascriptでオプションのパラメータを扱う