使用Angular.js和Restangular,当循环中的所有子请求完成时,如何挂钩?

时间:2014-10-08 22:55:35

标签: javascript angularjs restangular

使用Angular.js和Restangular,当循环中的所有子请求完成时,如何挂钩?例如:

Restangular.all('clusters').getList().then(function(clusters) {
     clusters.forEach(function(cluster, index) {
         cluster.get().then(function(response) {
             //some logic
         });
     });
});

基本上我需要知道所有cluster.get()的所有子请求何时完成,然后再做一些事情。这样做有干净的方法吗?

1 个答案:

答案 0 :(得分:2)

您应该能够使用$q.all方法等待所有请求。它可以这样工作:

Restangular.all('clusters').getList().then(function(clusters) {
    var promises = clusters.map(function(cluster, index) {
        return cluster.get().then(function(response) {
            //some logic
        });
    });

    return $q.all(promises);
}).then(function() {
    // logic for when all of the get methods are complete
});