回答編集履歴
2
a
answer
CHANGED
@@ -48,4 +48,46 @@
|
|
48
48
|
> counter 9
|
49
49
|
> done
|
50
50
|
|
51
|
+
```
|
52
|
+
|
53
|
+
# 追記
|
54
|
+
|
55
|
+
今回、質問文に掲載されているコードが期待した順番で動かない理由は、
|
56
|
+
setIntervalが非同期実行されるためです。
|
57
|
+
|
58
|
+
setIntervalやsetTimeoutは非同期実行されるため、
|
59
|
+
同期実行されるものが先に呼ばれることになります。
|
60
|
+
|
61
|
+
以下はsetTimeoutを使った例です。
|
62
|
+
|
63
|
+
```
|
64
|
+
// 【非同期】遅延時間0秒でログ出力
|
65
|
+
setTimeout(function() {
|
66
|
+
console.log('0 second delay');
|
67
|
+
}, 0);
|
68
|
+
|
69
|
+
// 【非同期】遅延時間1秒でログ出力
|
70
|
+
setTimeout(function() {
|
71
|
+
console.log('1 second delay');
|
72
|
+
}, 1000);
|
73
|
+
|
74
|
+
// 【同期】100,000から0まで同期的にディクリメント
|
75
|
+
var count = 100000;
|
76
|
+
while(count--) {
|
77
|
+
console.log('count down:', count);
|
78
|
+
}
|
79
|
+
|
80
|
+
//【同期】単純に'Hello'と出力
|
81
|
+
console.log('Hello');
|
82
|
+
|
83
|
+
// 出力結果:
|
84
|
+
> count down: 99999 - 同期
|
85
|
+
> count down: 99998 - 同期
|
86
|
+
> (中略) - 同期
|
87
|
+
> count down: 2 - 同期
|
88
|
+
> count down: 1 - 同期
|
89
|
+
> count down: 0 - 同期
|
90
|
+
> Hello - 同期
|
91
|
+
> 0 second delay - 非同期
|
92
|
+
> 1 second delay - 非同期
|
51
93
|
```
|
1
a
answer
CHANGED
@@ -6,6 +6,10 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
```
|
9
|
+
|
10
|
+
// 関数timerが関数Aに相当
|
11
|
+
// 関数timerの引数に渡すcallbackが関数Bに相当
|
12
|
+
|
9
13
|
function timer(callback) {
|
10
14
|
|
11
15
|
var counter = 0;
|