如果我需要在同一个弹出窗口中运行两个函数Assign1和Assign2,你会推荐这样吗?如果任何一个出错,窗口将关闭而不保存任何内容。如果 对语法不太确定。
function Assign() {
Assign1().then(function(isSuccess) {
if (isSuccess) {
Assign2();
saveAndClose();
} else {
CloseAndShowError();
}
}, function() {
CloseAndShowError();
});
}
我应该指定Assign1和Assign2是在其定义中使用promises制作的,我需要知道整体调用是否成功
答案 0 :(得分:1)
您可以尝试这样
function1() {
//function1 body
}
function2() {
//function2 body
}
在template
中将其称为
<button (click)="function1();function2()"> </button>
答案 1 :(得分:0)
尝试$ q.all(); https://docs.angularjs.org/api/ng/service/ $ Q#所有
此方法允许您运行多个承诺,就像它是一个承诺一样。
因此,在Assign()方法中,可能存在以下代码。
let promisesToBeRunned = [Assign1, Assign2];
$q.all(promisesToBeRunned)
.then(
() => {doYourSuccessStuff();}),
CloseAndShowError)
);
如果两个promises都成功,将执行成功回调。
如果其中一个promise(Assign1或Assign2)失败,将调用错误回调。
注意:尝试在Assign1上使用$ q.reject(),这样就不必使用了
if (isSuccess)
。也许如果你发布了Assign1定义,我可以给你一个想法。
我希望这会有所帮助。