2016-06-21 6 views
2

私は同時にAJAX要求を出していますが、すべての呼び出しが返ってくるまで待つ間に問題が発生しましたが、done()内のconsole.logは結果を空の配列として表示しています。 $。要求が完了するのを待っていません。

var result = [] 
    var promise = [] 
    for (i=0;i < array.length;i++) 
    { 
    _url = "http://example.com" 
     var req = $.ajax(
     { 
      type: "GET", 
      url: _url, 
      success: function(request) { result.push(request)   
      } , 
      error: function(request) { result.push("ERROR BROTHA")    
     } 
     }); 
     promise.push(req) 
    } 

    $.when(promise).done(function(){ 
    console.log(result); 
    }); 
+0

ES6ソリューション: '$ .when(...約束)の.done();' –

+0

@MarcoScabbiolo:あなたはES6を使用していた場合、あなたは '書きたいPromise.all(約束).then(...) '。 – Bergi

答えて

2

配列を広げる必要があります。 Docs。ドキュメント

jQuery.when(deferreds)

deferredsゼロ以上の繰延オブジェクト、またはプレーンのJavaScriptオブジェクトから

$.when.apply($, promise).done(...); 

+0

ありがとうございました – Pratyay

関連する問題