2

この記事waitでは、動的な数の ajax リクエストを終了する方法を示します。彼は次のことを行います。

var deferredArr = $.map($(".dynaload"), function(el, i) { 
    return $.ajax({ 
        url: $(el).data("loadUrl"), 
        success: function(html) { 
            $(el).html(html); 
        } 
    }); 
}); 
$.when.apply(this, deferredArr).then(function() { 
    alert("All Done Loading!"); 
});

問題は、遅延オブジェクトを解決する関数が、遅延オブジェクトと同じ数のパラメーターを取ることです。だから、私がこれを行うと:

$.when.apply(this, deferredArr).then(function(data) { 
    alert("All Done Loading!"); 
});

次にdata、最初の約束の結果です。結果を配列に追加せずにすべての結果を取得するにはどうすればよいですか?

4

1 に答える 1

3

引数の数が不明な関数は、特殊なarguments配列を使用できます。

$.when.apply(this, deferredArr).then(function() { 
    for (var i = 0; i < arguments.length; i++) {
        console.log("Promise "+i+" returned: "+arguments[i]);
    }
    alert("All Done Loading!"); 
});

ドキュメントと引数の使用例については、MDN のドキュメントを参照してください。

于 2012-12-25T18:33:23.910 に答える