我有這樣的代碼:如何使用promises爲對象數組的每個元素調用ajax?
// _arrOfUsers = array of objects, each object represents a user.
//For example, a single object may be something like {name:"mike", id:"123"}
var _successUsers = function (_arrOfUsers) {
var promises = []; //empty array of promises
_arrOfUsers.forEach(function (user) {
promises.push(function() {
return $.Deferred(function (dfd) {
$.post("//sessionID",
queryServ.getAllUserDomainCommentsFunc("//currentDomainID", user.iD, "//currentDomainID", "//currentURL"),
'text', 'text/plain', this,
function (dataX) {
dfd.resolve(dataX);
});
}).promise();
});
});
$.when(promises).then(function (results) {
console.log(results);
});
};
一些元素來理解這段代碼:
**** Ajax調用設置
- 網址:sessionURL
- 數據:數據發送給服務器是外部調用模塊 queryServ.js和函數getAllUserDomainCommentsFunct 返回一個JSON對象。它需要這些參數的工作: currentDomain,用戶ID,currentDomain(再次),CURRENTURL
- 類型:文本
- 的contentType:text/plain的
- 背景:這
****註釋是一個jsonObject類似於{id: "998", textOfcomment:"I commented this", target: "//targetID"}.
我想要做的是爲數組「_arrOfUsers」的每個用戶做一個ajax調用來提取他在服務器上的所有評論;在所有「提取」之後,我需要獲得所有結果(即所有用戶的所有評論)並將其打印在控制檯中。順序對我的代碼很重要,這就是我使用Promise的原因。
我在StackOverflow的JSfiddle上找到了這個算法的結構,但它對我不起作用,因爲它返回一個函數數組,我無法理解爲什麼,可能是因爲我從來沒有在使用Promise期間我的事業。
先謝謝您,如果有什麼不清楚的地方請隨時告訴我。
謝謝您發表評論jfriend00,我會盡快嘗試不可能性的代碼。無論如何,我添加了這些參數,因爲我試圖保留$ .ajax(url [,settings])的所有參數..但無論如何我不確定它是否正確! – nicoperillo
@nicoperillo - 如果您要將所有參數傳遞給'$ .post()',您必須將它們放入一個對象中並傳遞該對象。 – jfriend00
你的代碼很好用!非常感謝你! – nicoperillo