私はいくつかの.get()
を集める簡単なサービス方法を持っています。私は結果の一部しか持っていないので、 "印刷"の部分にいくつかの問題があります。最後にのみ結果を取得するためにメソッドをチェーンする方法はありますか?
私がやっていることは次のとおりです。
var service = function() {
var players = []; // will hold 100 objects
var getMembers = function(id) {
$.get(url, function(data) {
for(i=0; i<data.length; i++) {
var p = data[i];
// get more info for this member
getMemberDetails(p.member_id);
// put the current data into the players
players.push(p);
}
});
calculateAndPrint();
};
var getMemberDetails = function(id) {
$.get(url, function(data) {
var result = $.grep(players, function(e){ return e.member_id == id; });
if (result.length == 0) { /* not found */ }
else if (result.length == 1) {
// push new data to player object
result[0].details = data;
}
});
};
var calculateAndPrint = function() {
for(i=0; i<players.length; i++) {
var p = players[i];
console.log(p);
}
};
})();
、これは動作しません、私はcalculateAndPrint
に達したとき、details
がさえまだ設計されていないよう...
ので、私は$.Deferred()
と試してみました私が持っている問題は、getMemberDetails
メソッドを延期すると、その呼び出しにはすでにdeffer呼び出し(.get()
)が含まれており、同じ問題に戻っているということです。
oに最適なオプションは何ですか? 100回の呼び出しがすべて行われた後に、calculateAndPrint
を実行しますか?
それは十分に簡単そうですが、私はちょうど空白だ:/
カウンタをインクリメントして100に達したら、 'getMemberDetails'コールバック内でその関数を実行してください – Hacketo
このデータに対して100 + 1のHTTPリクエストを行いますか? 1回のコールに詳細を取得するために100回のリクエストすべてをバッチすることはできませんか? –
あなたはidを使っていて、 'getMembers()'を呼び出す方法は? – itzmukeshy7