我有这样的代码:如何使用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