我希望只有当来自其他服务的3个或更多异步事件成功完成时才会返回true,并且只要其中一个失败,就会返回false。
基本上和整个应用程序的“isReady”。 例如,在登录+获取一些用户数据+获取一些其他用户数据之后就是如此。
我怎样才能做到这一点,然后从这个服务中收听的所有相关服务调度事件,并执行cond1 && cond2 && cond3
之类的操作?
感谢。
答案 0 :(得分:1)
您可以使用all
服务的$q
方法,它采用一系列承诺并将其转换为一个独特的承诺。
在您的情况下,您有3个不同的服务进行3次异步调用。所以你需要在你的控制器中使用这样的东西:
$q.all([service1.data(), service2.data(), service3.getData()]).then(function (data) {
$scope.data = data;
}, function (err) {
$scope.data = "Something failed...";
});
有关详细信息,请check this Plunkr。