【发布时间】:2013-04-19 06:25:02
【问题描述】:
有没有办法将 promise 对象数组转换为数组的 promise 对象?我正在寻找在 AngularJS 中行为类似于 $q.all(promises) 的东西。
这是我的代码:
var getPages = function(courses) {
var courses_promises = courses.filter(function(item) {
return item.courses[0].home_link;
}).map(function(item) {
deferred = $.Deferred();
item["class_link"] = item.courses[0].home_link;
item["home_link"] = item["class_link"] + "class/index";
$.get(item.home_link)
.then(function(response) {
item["html"] = response;
deferred.resolve(item);
});
return deferred.promise();
});
return $.when.apply($, courses_promises);
};
我希望getPages 函数返回一个单一的promise,该promise 将用一个值数组解析,每个值对应于promise 数组中相同索引处的promise。如果任何一个 Promise 以一个拒绝的方式解决,这个产生的 Promise 将以同样的拒绝方式解决。
然后我会使用
getPages.then(getEvents)
其中getEvents 是另一个函数,它需要一个数组,其中的元素由getPages 解析。
谁能帮帮我?谢谢!
【问题讨论】: