我的 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/