这篇文章扩展了前一个已经解决的问题。请查看它,以获取上下文: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();
答案 0 :(得分:1)
与之前的问题一样,此处无需使用deferred
。只需使用$q.all()
,它会返回一个承诺:
var parseURL = function() {
$q.all([parseBoatType(), parseDestination()])
.then(function (results) {
console.log(results);
searchBoats(results);
});
};
parseURL();