回答編集履歴

3

あっぷされない

2019/12/18 04:09

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -56,4 +56,4 @@
56
56
 
57
57
  ```
58
58
 
59
- 最近書き込みがかなか完了しな
59
+ あっぷされない

2

ちょうせい

2019/12/18 04:09

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -55,3 +55,5 @@
55
55
 
56
56
 
57
57
  ```
58
+
59
+ ※最近書き込みがなかなか完了しない

1

ちょうせい

2019/12/18 03:45

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -1,3 +1,57 @@
1
1
  setTimeoutが外の変数を参照しているからですね
2
2
 
3
3
  おそらく非同期プログラムの最適化の恩恵だと思います
4
+
5
+
6
+
7
+ よくあるのはvarをletにする処理ですが
8
+
9
+ ```javascript
10
+
11
+ for(let i = 0; i < 3; i++) {
12
+
13
+ setTimeout(()=>{
14
+
15
+ console.log(i);
16
+
17
+ },0);
18
+
19
+ }
20
+
21
+ ```
22
+
23
+ きちんと引数で渡せば参照されます
24
+
25
+ ```javascript
26
+
27
+ for(var i = 0; i < 3; i++) {
28
+
29
+ console.log(x);
30
+
31
+ },0,i));
32
+
33
+ }
34
+
35
+ ```
36
+
37
+ また、きちんと非同期処理を管理すれば引数で渡さなくても大丈夫です
38
+
39
+ ```javascript
40
+
41
+ (async()=>{
42
+
43
+ for(var i = 0; i < 3; i++) {
44
+
45
+ await new Promise(resolve=>setTimeout(()=>{
46
+
47
+ resolve(i);
48
+
49
+ },0)).then(console.log);
50
+
51
+ }
52
+
53
+ })();
54
+
55
+
56
+
57
+ ```