0

ユーザーが自分のサイトにいる間ずっと、onload を実行している setInterval 関数があります。基本的には、window.innerWidth と window.outerWidth の違いを徐々にスキャンし (つまり、ユーザーが 100% ズーム以外でサイトを表示しているかどうかを検出します)、それを補正します。ズームアウトすると中央に配置されますが、ズームインすると左に配置されます。現在、関数は 250 ミリ秒ごとに実行されています。私が尋ねているのは、これが Web ページにどのような影響を与えるかということです。

4

3 に答える 3

3

How JavaScript Timers Workという記事を読む必要があります。基本的に、すべての js コードはイベント ループ内で実行され、すべてのイベント ハンドラーはキューに入れられ、できるだけ早く実行されます。

タイマーが内部でどのように機能するかを理解するために、検討する必要がある重要な概念が 1 つあります。タイマーの遅延は保証されていません。ブラウザー内のすべての JavaScript は単一のスレッドで実行されるため、非同期イベント (マウス クリックやタイマーなど) は、実行に空きがある場合にのみ実行されます。

タイマー ハンドラが実行されない場合もあります。タイムアウトが 2 回切れる場合がありますが、インタープリターはハンドラーを 1 回しか実行できず、キューに入れられた他のイベントを破棄します。

本当に、その記事を読んでください、それだけの価値があります。

于 2012-11-12T01:11:33.733 に答える
1

1/4秒ごとに実行するだけの場合は、「影響はない」はずです。a)調整が必要かどうかを判断し、b)調整を行うために何をしているのか正確にはわからないので、そうすべきではないと言います。

とは言うものの、これはポーリングではなくイベントのために作られた状況のように聞こえます。多分あなたは見るべきですwindow.onresize

于 2012-11-12T00:58:37.187 に答える
0

他の質問の回答の一部が質問に適切に答えている場合は、礼儀としてそれらをモーダル回答として受け入れる必要があります。

また、setInterval250ms 間隔で実行します。関数の実行が完了するまでに 250 ミリ秒以上かかる場合は、関数が次々と連続して実行されるため、ユーザーのコンピューターの速度が低下する可能性があります。

より良いアプローチは、前の関数が終了した後に遅延を実行するために関数をキューに入れる @ime-vidas によって与えられるものです。

于 2012-11-12T01:39:50.363 に答える