回答編集履歴

5

6

2018/04/18 04:35

投稿

think49
think49

スコア18164

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  なりません。
52
52
 
53
- 「4(10分後) -> 2(25分後) -> 5(30分後)」が出力されます。
53
+ 「4(10分後) -> 2(25分後) -> 6(30分後)」が出力されます。
54
54
 
55
55
  理由は先程説明したように、シングルスレッドだからです。
56
56
 

4

期待通りではない

2018/04/18 04:35

投稿

think49
think49

スコア18164

test CHANGED
@@ -1,4 +1,8 @@
1
1
  一応、一つの可能性として。
2
+
3
+
4
+
5
+ ### 同期処理
2
6
 
3
7
 
4
8
 
@@ -20,6 +24,10 @@
20
24
 
21
25
 
22
26
 
27
+ ### シングルスレッド
28
+
29
+
30
+
23
31
  また、おそらく勘違いされていることの一つに「非同期処理 !== 並列処理」があります。
24
32
 
25
33
  JavaScriptはシングルスレッドなので、setTimeoutで非同期処理化してもマルチスレッドにはなりません。
@@ -32,4 +40,26 @@
32
40
 
33
41
 
34
42
 
43
+ (**2018/04/18 13:34追記**)
44
+
45
+
46
+
47
+ > 以下のようにすれば期待する結果が得られるでしょうか。
48
+
49
+
50
+
51
+ なりません。
52
+
53
+ 「4(10分後) -> 2(25分後) -> 5(30分後)」が出力されます。
54
+
55
+ 理由は先程説明したように、シングルスレッドだからです。
56
+
57
+
58
+
59
+ 実際に検証して確かめることをお勧めします。
60
+
61
+ new Dateをwhileで繰り返せば、n秒待機するsleep関数を作れます。
62
+
63
+
64
+
35
65
  Re: miga さん

3

コールバック関数

2018/04/18 04:34

投稿

think49
think49

スコア18164

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- Promiseはコールバック関数によって、非同期処理の実行制御する仕組みです。
17
+ Promiseは**コールバック関数によって**、非同期処理の実行完了検知する仕組みです。
18
18
 
19
19
  同期処理はコードを書いた順に実行されますので、Promiseを通しても実行順は変化しません。
20
20
 

2

非同期処理、マルチスレッド

2018/04/17 23:50

投稿

think49
think49

スコア18164

test CHANGED
@@ -10,4 +10,26 @@
10
10
 
11
11
 
12
12
 
13
+ > Promiseで非同期処理化されるという認識ですが、違うのですか?
14
+
15
+
16
+
17
+ Promiseはコールバック関数によって、非同期処理の実行順を制御する仕組みです。
18
+
19
+ 同期処理はコードを書いた順に実行されますので、Promiseを通しても実行順は変化しません。
20
+
21
+
22
+
23
+ また、おそらく勘違いされていることの一つに「非同期処理 !== 並列処理」があります。
24
+
25
+ JavaScriptはシングルスレッドなので、setTimeoutで非同期処理化してもマルチスレッドにはなりません。
26
+
27
+ 「タイマー処理処理1」実行中に「タイマー処理2」の実行開始時刻を迎えた場合、setTimeoutは「タイマー処理1」が終了するまで、「タイマー処理2」を待機させます。
28
+
29
+
30
+
31
+ マルチスレッド化する為には「Service Worker」を使用します。
32
+
33
+
34
+
13
35
  Re: miga さん

1

typo修正

2018/04/17 23:48

投稿

think49
think49

スコア18164

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  「n分かかる処理」の内容が不明ですが、同期処理なら「2->1->3」の順に実行されるのが自然です。
6
6
 
7
- 3出力されるまでに30分かかっていませんか。
7
+ 3出力されるまでに30分かかっていませんか。
8
8
 
9
9
  「Promiseを通すことで非同期処理化する」と誤解していませんか。
10
10