回答編集履歴

2

a

2018/03/30 02:40

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -99,3 +99,87 @@
99
99
 
100
100
 
101
101
  ```
102
+
103
+
104
+
105
+ # 追記
106
+
107
+
108
+
109
+ 今回、質問文に掲載されているコードが期待した順番で動かない理由は、
110
+
111
+ setIntervalが非同期実行されるためです。
112
+
113
+
114
+
115
+ setIntervalやsetTimeoutは非同期実行されるため、
116
+
117
+ 同期実行されるものが先に呼ばれることになります。
118
+
119
+
120
+
121
+ 以下はsetTimeoutを使った例です。
122
+
123
+
124
+
125
+ ```
126
+
127
+ // 【非同期】遅延時間0秒でログ出力
128
+
129
+ setTimeout(function() {
130
+
131
+ console.log('0 second delay');
132
+
133
+ }, 0);
134
+
135
+
136
+
137
+ // 【非同期】遅延時間1秒でログ出力
138
+
139
+ setTimeout(function() {
140
+
141
+ console.log('1 second delay');
142
+
143
+ }, 1000);
144
+
145
+
146
+
147
+ // 【同期】100,000から0まで同期的にディクリメント
148
+
149
+ var count = 100000;
150
+
151
+ while(count--) {
152
+
153
+ console.log('count down:', count);
154
+
155
+ }
156
+
157
+
158
+
159
+ //【同期】単純に'Hello'と出力
160
+
161
+ console.log('Hello');
162
+
163
+
164
+
165
+ // 出力結果:
166
+
167
+ > count down: 99999 - 同期
168
+
169
+ > count down: 99998 - 同期
170
+
171
+ > (中略) - 同期
172
+
173
+ > count down: 2 - 同期
174
+
175
+ > count down: 1 - 同期
176
+
177
+ > count down: 0 - 同期
178
+
179
+ > Hello - 同期
180
+
181
+ > 0 second delay - 非同期
182
+
183
+ > 1 second delay - 非同期
184
+
185
+ ```

1

a

2018/03/30 02:40

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -13,6 +13,14 @@
13
13
 
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ // 関数timerが関数Aに相当
20
+
21
+ // 関数timerの引数に渡すcallbackが関数Bに相当
22
+
23
+
16
24
 
17
25
  function timer(callback) {
18
26