質問するログイン新規登録

回答編集履歴

2

追記

2017/05/22 14:12

投稿

yambejp
yambejp

スコア118024

answer CHANGED
@@ -24,4 +24,42 @@
24
24
 
25
25
  </script>
26
26
 
27
+ ```
28
+
29
+ # 追記
30
+ なにか噛み合っていないようですね
31
+ 私の理解力がないのでしょうか、お役に立てずに残念です
32
+ 一応sample追加しときますが、おそらく質問者さんのやりたいこととは違うのでしょうね
33
+
34
+ ```
35
+ <script src="https://www.promisejs.org/polyfills/promise-6.1.0.min.js"></script>
36
+ <script>
37
+ var prm=[];
38
+ console.log("start");
39
+ for(var i=0;i<100;i++){
40
+ (function(i){
41
+ prm[i]= new Promise(function(resolver){
42
+ var xhr = new XMLHttpRequest();
43
+ xhr.open('GET','recv.php?x='+i,true);
44
+ xhr.addEventListener("load" ,function() {
45
+ console.log(this.response)
46
+ resolver(this);
47
+ });
48
+ xhr.send();
49
+ });
50
+ })(i);
51
+ }
52
+ Promise.all( prm ).then(function(){
53
+ console.log("end");
54
+ });
55
+
56
+ </script>
57
+ ```
58
+
59
+ - 呼び出し先recv.php
60
+ ```PHP
61
+ <?PHP
62
+ sleep(3);
63
+ print $_GET["x"];
64
+ ?>
27
65
  ```

1

sample

2017/05/22 14:12

投稿

yambejp
yambejp

スコア118024

answer CHANGED
@@ -1,4 +1,27 @@
1
1
  状況がよくわかりませんがrejectを拾ってしまうと
2
2
  途中でとまってしまいませんか?
3
3
  rejectの想定を404エラーなどだと想定しているのであれば
4
- statusをみてresolveで処理してみてはいかがでしょうか?
4
+ statusをみてresolveで処理してみてはいかがでしょうか?
5
+
6
+ # sample
7
+ startが表示されてから1秒後に10秒間かけて1000個のデータを表示
8
+
9
+ ```javascript
10
+ <script src="https://www.promisejs.org/polyfills/promise-6.1.0.min.js"></script>
11
+ <script>
12
+ var prm=[];
13
+ console.log("start");
14
+ for(var i=0;i<1000;i++){
15
+ (function(i){
16
+ prm[i]= new Promise(function(resolver){
17
+ setTimeout(function(){console.log(i);resolver(this);},1000+10*i);
18
+ });
19
+ })(i);
20
+ }
21
+ Promise.all( prm ).then(function(){
22
+ console.log("end");
23
+ });
24
+
25
+ </script>
26
+
27
+ ```