从同一个弹出窗口

时间:2017-11-10 09:05:30

标签: javascript angular

如果我需要在同一个弹出窗口中运行两个函数Assign1和Assign2,你会推荐这样吗?如果任何一个出错,窗口将关闭而不保存任何内容。如果 对语法不太确定。

function Assign() {
    Assign1().then(function(isSuccess) {
        if (isSuccess) {
            Assign2();
            saveAndClose();
        } else {
            CloseAndShowError();
        }
    }, function() {
        CloseAndShowError();
    });

}

我应该指定Assign1和Assign2是在其定义中使用promises制作的,我需要知道整体调用是否成功

2 个答案:

答案 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定义,我可以给你一个想法。

我希望这会有所帮助。