回答編集履歴
2
修正
test
CHANGED
@@ -31,6 +31,5 @@
|
|
31
31
|
await _looper();
|
32
32
|
}
|
33
33
|
```
|
34
|
-
実行確認用 👉 https://
|
34
|
+
実行確認用 👉 https://jsfiddle.net/su507/fvqudc8b/2/
|
35
35
|
|
36
|
-
|
1
追記
test
CHANGED
@@ -7,3 +7,30 @@
|
|
7
7
|
- 現在動いている定間隔実行を表す`intervalID`を保持したりするのにクラスを使うと、実行を制御する変数や関連メソッドをまとめられて良いかと思います。(これはthink49さんの回答でも言われているとおりです)
|
8
8
|
|
9
9
|
|
10
|
+
### 追記
|
11
|
+
|
12
|
+
私のオススメは上記のように `setInterval()` を使うことですが、質問のコードにあるループ1回分の待ち時間を作る`_sleep(ms)` をそのまま使って、`test1()`の修正でどうにかしようとすると、以下でそれっぽく動きます。
|
13
|
+
```javascript
|
14
|
+
const test1 = async () => {
|
15
|
+
if (test1.looper) {
|
16
|
+
test1.looper.shouldBreak = true;
|
17
|
+
}
|
18
|
+
|
19
|
+
const _looper = async () => {
|
20
|
+
_looper.shouldBreak = false;
|
21
|
+
for (let i = 0; i < 100; i++) {
|
22
|
+
if (_looper.shouldBreak) {
|
23
|
+
break;
|
24
|
+
}
|
25
|
+
console.log(`Hello ${i}`);
|
26
|
+
await _sleep(1000);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
test1.looper = _looper;
|
31
|
+
await _looper();
|
32
|
+
}
|
33
|
+
```
|
34
|
+
実行確認用 👉 https://codepen.io/su507/pen/WNzENPv?editors=1011
|
35
|
+
|
36
|
+
|