3

ajax 呼び出し配列内のすべての要求の完了時に $.when.apply($, Requests[]) 呼び出しの結果を返すことができるかどうか疑問に思っていましたか?

利用した:

$.when($.ajax(...)).done(function(data){ console.log(data.d); }

これにより、ajax 呼び出しの結果を操作できます。同じ概念を $.when.apply($, Requests[]) に適用するにはどうすればよいですか? 試してみ$.when.apply($, Requests[]).then(function(data?){ console.log(data.d); }ましたが、うまくいきません。何か案は?

基本的に、私は可変数の同様の ajax 呼び出しを実行し、すべてが完了したら結果を操作しようとしています。正しい方向へのヒントをいただければ幸いです。

編集: 明確化 Requests[] を ajax リクエストを保持する配列として設定しました。例:

var Requests = [];
for (var i = 0; i <= 10; i++){ Requests.push($.ajax({...ajax setup...}));
$.when.apply($, Requests).then(function(...){ do Stuff with the result of all });
4

1 に答える 1

5

then コールバックは、渡された promise の数に基づいて、可変数の引数を受け取ります。

この場合、ajax promise が渡されるため、各引数は、データ、ステータス、および jqxhr オブジェクトの 3 つの項目を持つ配列です。

したがって、最初のリクエストの結果を取得するには、次の構文を使用する必要があります。

then(function(result1){
    console.log(result[0].d)
})

すべてのリクエストの結果を印刷する

then(function (result1) {
    $.each(arguments, function (idx, args) {
        console.log(args[0]);// in your case args[0].d
    })
})

デモ:フィドル

于 2013-10-01T02:30:25.553 に答える