回答編集履歴

3

.

2022/04/12 04:30

投稿

int32_t
int32_t

スコア21601

test CHANGED
@@ -15,10 +15,10 @@
15
15
  **GOOD:**
16
16
  ```js
17
17
  let array = [..];
18
- let startTime = performance.now();
18
+ const startTime = performance.now();
19
19
  requestAnimationFrame(handleFrame);
20
20
  function handleFrame(timeStamp) {
21
- let arrayIndex = Math.floor((timeStamp - startTime) / 200) % array.length;
21
+ const arrayIndex = Math.floor((timeStamp - startTime) / 200) % array.length;
22
22
  // array[arrayIndex] を処理
23
23
  requestAnimationFrame(handleFrame);
24
24
  }
@@ -32,11 +32,11 @@
32
32
  ```
33
33
  **GOOD:**
34
34
  ```js
35
- let startTime = performance.now();
35
+ const startTime = performance.now();
36
36
  let fCount = 0;
37
37
  requestAnimationFrame(handleFrame);
38
38
  function handleFrame(timeStamp) {
39
- let expectedCount = Math.floor((timeStamp - startTime) / 200);
39
+ const expectedCount = Math.floor((timeStamp - startTime) / 200);
40
40
  for (; fCount < expectedCount; ++fCount)
41
41
  f();
42
42
  requestAnimationFrame(handleFrame);

2

.

2022/04/12 03:49

投稿

int32_t
int32_t

スコア21601

test CHANGED
@@ -39,6 +39,7 @@
39
39
  let expectedCount = Math.floor((timeStamp - startTime) / 200);
40
40
  for (; fCount < expectedCount; ++fCount)
41
41
  f();
42
+ requestAnimationFrame(handleFrame);
42
43
  }
43
44
  ```
44
45
 

1

コード例追加

2022/04/12 03:47

投稿

int32_t
int32_t

スコア21601

test CHANGED
@@ -24,6 +24,25 @@
24
24
  }
25
25
  ```
26
26
 
27
+ 「200ms毎にある関数を呼ぶ」のような処理は「処理開始からN ms 経過後なら合計 N / 200 回呼ぶ」という処理に変更しましょう。
28
+
29
+ **BAD:**
30
+ ```js
31
+ setInterval(f, 200);
32
+ ```
33
+ **GOOD:**
34
+ ```js
35
+ let startTime = performance.now();
36
+ let fCount = 0;
37
+ requestAnimationFrame(handleFrame);
38
+ function handleFrame(timeStamp) {
39
+ let expectedCount = Math.floor((timeStamp - startTime) / 200);
40
+ for (; fCount < expectedCount; ++fCount)
41
+ f();
42
+ }
43
+ ```
44
+
45
+
27
46
  ----
28
47
 
29
48
  どうしても定期的に処理を行いたいこともあるとは思います。たとえば定期的にサーバにアクセスしないとサーバ側でタイムアウトしてしまうとか。そういう場合は `Worker` を使います。