質問編集履歴

2

追記

2018/04/18 02:12

投稿

miga
miga

スコア7

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  var func1 = function(){
14
14
 
15
- return new Promise(function(resolve,reject){
15
+ return new Promise(function(resolve){
16
16
 
17
17
  var sum = 1+1; //処理1 (15分掛かる処理)
18
18
 
@@ -76,6 +76,8 @@
76
76
 
77
77
 
78
78
 
79
+
80
+
79
81
  ただ、上記のコードの最後の部分を以下のように順番を変えて、実行すると、このような結果になりましたので、処理結果の出力順は、Promiseを呼び出す順番によって決まるのかなと思ってしまいました。
80
82
 
81
83
  ```javascript
@@ -93,3 +95,89 @@
93
95
  処理1
94
96
 
95
97
  処理3
98
+
99
+
100
+
101
+
102
+
103
+ #### Re:think49さん
104
+
105
+
106
+
107
+ Promise内でコールバック関数を使わないと非同期処理にならないとのことで、上記コードが非同期にならない理由がわかりました。以下のようにすれば期待する結果が得られるでしょうか。コメントアウトに記述した時間だけ処理に時間が掛かると仮定として考えてください。
108
+
109
+ ```javascript
110
+
111
+ var func1 = function(){
112
+
113
+ return new Promise(function(resolve){
114
+
115
+ setTimeout(function(){
116
+
117
+ var sum = 1+1; //処理1 (15分掛かる処理)
118
+
119
+ resolve(sum);
120
+
121
+ },0);
122
+
123
+ })
124
+
125
+ }
126
+
127
+
128
+
129
+ var func2 = function(){
130
+
131
+ return new Promise(function(resolve){
132
+
133
+ setTimeout(function(){
134
+
135
+ var sum = 2+2; //処理2 (10分掛かる処理)
136
+
137
+ resolve(sum);
138
+
139
+ },0);
140
+
141
+ })
142
+
143
+ }
144
+
145
+
146
+
147
+ var func3 = function(){
148
+
149
+ return new Promise(function(resolve){
150
+
151
+ setTimeout(function(){
152
+
153
+ var sum = 3+3; //処理3 (5分掛かる処理)
154
+
155
+ resolve(sum);
156
+
157
+ },0);
158
+
159
+ })
160
+
161
+ }
162
+
163
+
164
+
165
+ func2().then(function(sum){console.log(sum)});
166
+
167
+ func1().then(function(sum){console.log(sum)});
168
+
169
+ func3().then(function(sum){console.log(sum)});
170
+
171
+ ```
172
+
173
+
174
+
175
+ 期待する結果
176
+
177
+
178
+
179
+ 6 //5分後
180
+
181
+ 4 //10分後
182
+
183
+ 2 //15分後

1

誤字

2018/04/18 02:12

投稿

miga
miga

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,4 @@
1
1
  ### 前提・実現したいこと
2
-
3
-
4
-
5
- ここに質問の内容を詳しく書いてください。
6
2
 
7
3
  Promiseを使って以下のようなコードを書いたとき、処理1-3の結果はどのような順番で表示されるかを知りたいです。それぞれの処理は完了するまで、コメントアウトに記載している時間が掛かる前提です。
8
4