如何像在C#中一样同步运行角度代码

时间:2019-05-09 12:36:41

标签: c# angular typescript

我正在尝试使用Angular重新创建C#应用程序,但是我正在努力使代码像在c#中那样同步运行。

这里是一个例子:

private void doChecks()
{
    if (isInvoiced())
        return;

    Console.WriteLine("Done");
}

private bool isInvoiced()
{
    var invID = Server.GetInvoice(mAccID);
    if (invID <= 0)
        return false;
    else 
        return someOtherFunction(invID);
}

当我尝试在Angular中实现此功能时,我不确定如何不借助async await方法来完成相同的流程。


async doChecks() {
    const doAllChecks = await this.service.DoChecks(this.mAcc).toPromise();

    if (await this.isInvoiced()) {
      return;
    }
    Console.log("Done");
}


async isInvoiced() {
    const invID = await this.service.GetInvoice(this.mAcc).toPromise();

    if (invID <= 0)
        return false;
    else {
        const data = await someOtherFunction(invID); // now this function is also going to have to be async to I can await inside of that for its http request to finish.
        return data;
    }
}

有没有一种方法可以更简单地完成此任务?

1 个答案:

答案 0 :(得分:0)

您可以在“ then statement”中一个接一个地运行它。嵌套的承诺。如果您使用的是Angular 2及更高版本,则可以尝试将逻辑嵌套在订阅服务器中,而不是promise。

 this.MyPromise1().then(result => {
    this.MyPromise2().then(result2 => {
    this.MyPromise3().then(result3 => {
     and so on..
    })
    })
    });