回答編集履歴

2

具体例追加

2022/12/08 07:44

投稿

dameo
dameo

スコア943

test CHANGED
@@ -5,3 +5,20 @@
5
5
  `Promise`にした後は必然的に全面的な書き直しになると思います。イベントの処理は皆さん言われるように重たい処理は非同期(`async/await`)で行いましょう。
6
6
 
7
7
  あと自動実行時のUI制御もちゃんとしてくださいね。
8
+
9
+ ----
10
+ (追記)
11
+ 具体例がないと分からないかもしれないので、sleep()を例えばこうすべきという例だけ書いておきます。
12
+ ```JavaScript
13
+ const delay = msec => new Promise(resolve => setTimeout(resolve, msec));
14
+
15
+ async function sleep(sec) {
16
+ console.log("Sleeping");
17
+ await delay(sec * 1000);
18
+ console.log("Sleeping Break!!");
19
+ }
20
+ ...
21
+ await sleep(3);
22
+ ...
23
+ ```
24
+ 普通に順に直していったら動くことは動きました。

1

promiseをPromiseにした

2022/12/08 07:08

投稿

dameo
dameo

スコア943

test CHANGED
@@ -1,8 +1,7 @@
1
1
  **最終的に全面的な書き直しが必要です**。
2
2
 
3
3
  一番の問題は`sleep(3)`です。ビジーループで待っているので、この間に描画もUI操作もできません。これをclickイベントの中でやるのは初心者でもダメです。
4
- ビジーループの代わりに`setTimeout()`を使ってください。`sleep()`を`setTimeout()`と`promise`で書き直せばOKです。
4
+ ビジーループの代わりに`setTimeout()`を使ってください。`sleep()`を`setTimeout()`と`Promise`で書き直せばOKです。
5
- `promise`にした後は必然的に全面的な書き直しになると思います。イベントの処理は皆さん言われるように重たい処理は非同期(`async/await`)で行いましょう。
5
+ `Promise`にした後は必然的に全面的な書き直しになると思います。イベントの処理は皆さん言われるように重たい処理は非同期(`async/await`)で行いましょう。
6
6
 
7
7
  あと自動実行時のUI制御もちゃんとしてくださいね。
8
-