javascript - angularjs promise 在显示消息之前等待 3 个服务完成

标签 javascript angularjs

我的 UI 上有一个包含 3 个选项的复选框,每个复选框选项都代表要实现的独立服务。但是,由于这些服务的调用方式不同,我需要想出一种方法来等待所有选定的选项完成,直到显示消息。

基本上,最初的实现是这样的:

if (doA) {
   mysvc.doA();
}

if (doB) {
   mysvc.doB();
}

if (doC) {
   mysvc.doC();
}

window.alert('success');

然后我意识到我需要等待所有这些都完成,所以我想出了这个:

if (doA) {
   mysvc.doA();
}

if (doB) {
   mysvc.doB();
}

if (doC) {
   mysvc.doC();
}

setTimeout(function () {
    window.alert('success');
}, 8000);

因为如果全部选择,操作通常最多需要 8 秒才能完成。但这显然并不理想。另外,我最终想在最后为每个单独的操作提供反馈。任何帮助或资源将不胜感激。

最佳答案

你可以使用$q.all:

var promises = [];
if (doA) {
   promises.push(mysvc.doA);

}

if (doB) {
   promises.push(mysvc.doB);
}

if (doC) {
   promises.push(mysvc.doC);
}

$q.all(promises).then(function(d){
    window.alert('success');
})

关于javascript - angularjs promise 在显示消息之前等待 3 个服务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096878/

相关文章:

javascript - slider 效果不起作用

javascript - WHILE 条件中多个逗号分隔的表达式的目的是什么?

javascript + 不透明度转换不起作用

javascript - UI 路由器和 Angularjs : main content isn't being displayed

javascript - 在 ui-router 状态下加载共享模型

javascript - 通过 Javascript 检查没有 id 和类的 radio

javascript - Count Api 返回未定义的响应

javascript - 使用工厂方法创建服务时,AngularJS 模块未定义

angularjs - Jasmine - 检查 Controller 方法中的服务方法是否被调用

angularjs - 确定不记名 token 是否已过期或刚刚被授权