質問編集履歴
9
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,45 +1,30 @@
|
|
1
1
|
when apply を使った並列化の記事はよくでてくるのですが
|
2
2
|
その終了後に同期処理をいれる方法がまったくでてこなくて困っています
|
3
3
|
|
4
|
-
本当に動かしたいコードを短いテストコードに落とし込めなかったので
|
5
|
-
|
6
|
-
https://qiita.com/steelydylan/items/c8afe481b03e486be344
|
7
|
-
をおかりして以下のようなサンプルを用意しました
|
8
4
|
```
|
9
|
-
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
|
10
|
-
|
5
|
+
function f() {
|
11
|
-
|
6
|
+
for(let i = 0; i < 10; i++) {
|
12
|
-
|
13
|
-
var
|
7
|
+
var deferredFunc = function(){
|
14
|
-
var d = new $.Deferred();
|
15
|
-
setTimeout(function(){
|
16
|
-
d.resolve();
|
17
|
-
},5000);
|
18
|
-
|
8
|
+
return $ajax(...).then(
|
9
|
+
function() {},
|
10
|
+
function() {}
|
11
|
+
);
|
12
|
+
};
|
13
|
+
deferredArray.push(deferredFunc());
|
14
|
+
}
|
15
|
+
$.when.apply(null, deferredArray).then(
|
16
|
+
function() {},
|
17
|
+
function() {}
|
18
|
+
);
|
19
19
|
}
|
20
20
|
|
21
|
-
var getObjs = function(){
|
22
|
-
var defarr = [];
|
23
|
-
ajaxs.forEach(function(url){
|
24
|
-
var d = new $.Deferred();
|
25
|
-
$.getJSON(url,function(json){
|
26
|
-
items.push(json);
|
27
|
-
d.resolve();
|
28
|
-
|
21
|
+
f();
|
29
|
-
defarr.push(d.promise());
|
30
|
-
});
|
31
|
-
|
22
|
+
console.log('test');
|
32
|
-
|
23
|
+
```
|
33
24
|
|
34
|
-
var message = function(){
|
35
|
-
|
25
|
+
これで最後のメッセージの終了をまってから test を表示するにはどうすればいいんでしょうか
|
36
|
-
}
|
37
26
|
|
38
|
-
wait().then(getObjs).then(message);
|
39
|
-
console.log('test')
|
40
|
-
|
41
|
-
|
42
|
-
</script>
|
43
27
|
```
|
44
|
-
|
45
|
-
|
28
|
+
f().then(() => console.log('test'));
|
29
|
+
```
|
30
|
+
でもだめでした
|
8
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
本当に動かしたいコードを短いテストコードに落とし込めなかったので
|
5
5
|
|
6
6
|
https://qiita.com/steelydylan/items/c8afe481b03e486be344
|
7
|
-
を
|
7
|
+
をおかりして以下のようなサンプルを用意しました
|
8
8
|
```
|
9
9
|
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
|
10
10
|
<script>
|
7
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,59 +1,45 @@
|
|
1
1
|
when apply を使った並列化の記事はよくでてくるのですが
|
2
2
|
その終了後に同期処理をいれる方法がまったくでてこなくて困っています
|
3
3
|
|
4
|
-
以下のようにネットワーク処理を並列化した
|
5
|
-
```
|
6
|
-
function f() {
|
7
|
-
for(let i = 0; i < 10; i++) {
|
8
|
-
var deferredFunc = function(){
|
9
|
-
return $ajax(...).then(
|
10
|
-
function() {},
|
11
|
-
function() {}
|
12
|
-
);
|
13
|
-
};
|
14
|
-
deferredArray.push(deferredFunc());
|
15
|
-
}
|
16
|
-
$.when.apply(null, deferredArray).then(
|
17
|
-
function() {},
|
18
|
-
function() {}
|
19
|
-
);
|
20
|
-
}
|
21
|
-
```
|
22
|
-
|
4
|
+
本当に動かしたいコードを短いテストコードに落とし込めなかったので
|
23
5
|
|
6
|
+
https://qiita.com/steelydylan/items/c8afe481b03e486be344
|
24
|
-
|
7
|
+
を参考にして以下のようなサンプルを用意しました
|
25
8
|
```
|
26
|
-
|
9
|
+
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
|
27
|
-
|
10
|
+
<script>
|
28
|
-
```
|
29
|
-
|
11
|
+
var ajaxs = ['https://code.jquery.com/jquery-3.3.1.min.js', 'https://code.jquery.com/jquery-3.3.1.min.js'];
|
30
12
|
|
13
|
+
var wait = function(){
|
14
|
+
var d = new $.Deferred();
|
15
|
+
setTimeout(function(){
|
16
|
+
d.resolve();
|
17
|
+
},5000);
|
18
|
+
return d.promise();
|
19
|
+
}
|
31
20
|
|
32
|
-
```
|
33
|
-
function f() {
|
34
|
-
for(...) {
|
35
|
-
|
21
|
+
var getObjs = function(){
|
22
|
+
var defarr = [];
|
23
|
+
ajaxs.forEach(function(url){
|
36
|
-
|
24
|
+
var d = new $.Deferred();
|
25
|
+
$.getJSON(url,function(json){
|
37
|
-
|
26
|
+
items.push(json);
|
38
|
-
|
27
|
+
d.resolve();
|
39
|
-
|
28
|
+
});
|
29
|
+
defarr.push(d.promise());
|
40
|
-
};
|
30
|
+
});
|
41
|
-
deferredArray.push(deferredFunc());
|
42
|
-
}
|
43
|
-
|
31
|
+
return $.when.apply($,defarr);
|
44
|
-
function,
|
45
|
-
function
|
46
|
-
);
|
47
32
|
}
|
48
33
|
|
49
|
-
|
34
|
+
var message = function(){
|
35
|
+
console.log("everything is done");
|
36
|
+
}
|
37
|
+
|
38
|
+
wait().then(getObjs).then(message);
|
50
|
-
|
39
|
+
console.log('test')
|
40
|
+
|
41
|
+
|
51
|
-
|
42
|
+
</script>
|
52
43
|
```
|
53
|
-
とかいたのですがやはりすぐ実行されてしまいます
|
54
44
|
|
55
|
-
JSの非同期処理がまったくわかってないんですが
|
56
|
-
|
45
|
+
これで最後のメッセージの終了をまってから test を表示するにはどうすればいいんでしょうか
|
57
|
-
$.when.apply().then は何を返してるんでしょうか…
|
58
|
-
|
59
|
-
jQuery は 3.3.1 です
|
6
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
以下のようにネットワーク処理を並列化した
|
5
5
|
```
|
6
6
|
function f() {
|
7
|
-
for(
|
7
|
+
for(let i = 0; i < 10; i++) {
|
8
8
|
var deferredFunc = function(){
|
9
9
|
return $ajax(...).then(
|
10
10
|
function() {},
|
5
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,15 +7,15 @@
|
|
7
7
|
for(...) {
|
8
8
|
var deferredFunc = function(){
|
9
9
|
return $ajax(...).then(
|
10
|
-
function,
|
10
|
+
function() {},
|
11
|
-
function
|
11
|
+
function() {}
|
12
12
|
);
|
13
13
|
};
|
14
14
|
deferredArray.push(deferredFunc());
|
15
15
|
}
|
16
16
|
$.when.apply(null, deferredArray).then(
|
17
|
-
function,
|
17
|
+
function() {},
|
18
|
-
function
|
18
|
+
function() {}
|
19
19
|
);
|
20
20
|
}
|
21
21
|
```
|
4
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,4 +54,6 @@
|
|
54
54
|
|
55
55
|
JSの非同期処理がまったくわかってないんですが
|
56
56
|
f.then.then でつなげば必ず終了をまってから実行されるわけではないのでしょうか…
|
57
|
-
$.when.apply().then は何を返してるんでしょうか…
|
57
|
+
$.when.apply().then は何を返してるんでしょうか…
|
58
|
+
|
59
|
+
jQuery は 3.3.1 です
|
3
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
+
when apply を使った並列化の記事はよくでてくるのですが
|
2
|
+
その終了後に同期処理をいれる方法がまったくでてこなくて困っています
|
3
|
+
|
1
|
-
ネットワーク処理を並列化した
|
4
|
+
以下のようにネットワーク処理を並列化した
|
2
5
|
```
|
3
6
|
function f() {
|
4
7
|
for(...) {
|
2
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -42,10 +42,11 @@
|
|
42
42
|
function
|
43
43
|
);
|
44
44
|
}
|
45
|
-
|
45
|
+
|
46
46
|
f().then(function() {
|
47
47
|
console.log("test");
|
48
48
|
});
|
49
|
+
```
|
49
50
|
とかいたのですがやはりすぐ実行されてしまいます
|
50
51
|
|
51
52
|
JSの非同期処理がまったくわかってないんですが
|
1
タグ追加
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|