回答編集履歴

2

追記

2018/11/14 11:23

投稿

yambejp
yambejp

スコア114784

test CHANGED
@@ -73,3 +73,51 @@
73
73
  });
74
74
 
75
75
  ```
76
+
77
+
78
+
79
+ # 一連の処理後に更に処理
80
+
81
+ ```javascript
82
+
83
+ function f() {
84
+
85
+ var d=$.Deferred();
86
+
87
+ var deferredArray=[];
88
+
89
+ for(let i = 0; i < 10; i++) {
90
+
91
+ var deferredFunc = function(){
92
+
93
+ return $.ajax({url:"y.php"}).then(function(){
94
+
95
+ console.log(i);
96
+
97
+ });
98
+
99
+ };
100
+
101
+ deferredArray.push(deferredFunc());
102
+
103
+ }
104
+
105
+ $.when.apply(null, deferredArray).then(function(){
106
+
107
+ console.log("end");
108
+
109
+ d.resolve();
110
+
111
+ });
112
+
113
+ return d.promise();
114
+
115
+ }
116
+
117
+ f().then(function(){
118
+
119
+ console.log('test');
120
+
121
+ });
122
+
123
+ ```

1

調整

2018/11/14 11:23

投稿

yambejp
yambejp

スコア114784

test CHANGED
@@ -43,3 +43,33 @@
43
43
  ?>
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ # Promiseが返らなくても
50
+
51
+ Defferedを複数発行すれば非同期全体をまってくれる(Promise.all)はずですけどね
52
+
53
+ ```javascript
54
+
55
+ $(function(){
56
+
57
+ console.log("start");
58
+
59
+ var defs=Array(3).fill(null).map(function(){return $.Deferred()});
60
+
61
+ setTimeout(function(){console.log(1);return defs[0].resolve()},3000),
62
+
63
+ setTimeout(function(){console.log(2);return defs[1].resolve()},1000),
64
+
65
+ setTimeout(function(){console.log(3);return defs[2].resolve()},2000),
66
+
67
+ $.when.apply(null,defs).then(function(){
68
+
69
+ console.log("end");
70
+
71
+ });
72
+
73
+ });
74
+
75
+ ```