У меня есть этот код:Как сделать вызов 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
- URL: sessionURL
- данных: данные для передачи сервер является внешним вызовом модуля queryServ.js и функцией getAllUserDomainCommentsFunct, что возвращает объект JSON. Необходимо эти параметры работы: currentDomain, USERID, currentDomain (опять же), CURRENTURL
- Тип: Текст
- CONTENTTYPE: текст/равнина
- контекст: это
**** A комментарий является jsonObject smilar до {id: "998", textOfcomment:"I commented this", target: "//targetID"}.
Что я хочу сделать, это сделать ajax-вызов для каждого пользователя массива «_arrOfUsers», чтобы извлечь все его комментарии на сервер; после всех «экстракций» мне нужно получить все результаты (это все комментарии от всех пользователей) и распечатать их в консоли. Порядок для моего кода важен, поэтому я использую Promises.
Я нашел структуру этого алгоритма на JSfiddle здесь, в StackOverflow, но он не работает для меня, потому что он возвращает массив функций, и я не могу понять, почему, вероятно, потому, что я никогда не использовал Promises во время моя карьера.
Спасибо заранее, если есть что-то непонятное, пожалуйста, не стесняйтесь говорить мне.
Спасибо за ваш комментарий jfriend00, Попробую свой код, как только possibile. В любом случае я добавил эти аргументы, потому что пытался сохранить все аргументы $ .ajax (url [, settings]) .. но в любом случае я не уверен, что это правильно! – nicoperillo
@nicoperillo - Если вы собираетесь передать все эти аргументы в '$ .post()', вы должны поместить их в объект и передать объект. – jfriend00
Ваш код отлично работает!Большое спасибо! – nicoperillo