AngularJS 1.0.7:使用$ resources嵌套并行承诺

时间:2017-09-21 15:56:27

标签: javascript angularjs

这篇文章扩展了前一个已经解决的问题。请查看它,以获取上下文:Nesting promises with $resources in AngularJS 1.0.7

考虑到这种方法,我想对函数进行并行调用,当两者都完成时,然后使用结果运行searchBoats函数。我想我可以嵌套承诺,但我也认为它可以并行完成,也许可以使用$ q.all。不幸的是,这个承诺的主题让我感到困惑,我不知道该怎么做。

以上一篇文章为例,我想做一些事情:

var parseURL = function() {
  var deferred = $q.defer();
  var promise = deferred.promise;
  promise.then(function success(result) {
    console.log(result);
    searchBoats(result);
  });

  // Instead of resolve when parseBoatType promise is returned, I would like to   
  // wait for two promises
  parseBoatType().then(deferred.resolve);
  parseDestination().then(deferred.resolve);
  // of course, with this code deferred will be resolved when first promise 
  // comes. Is it possible to use $q.all here?
};
parseURL();

1 个答案:

答案 0 :(得分:1)

与之前的问题一样,此处无需使用deferred。只需使用$q.all(),它会返回一个承诺:

var parseURL = function() {
  $q.all([parseBoatType(), parseDestination()])
      .then(function (results) {
          console.log(results);
          searchBoats(results);
      });
};
parseURL();