Как запустить угловой код синхронно, как я бы в C # - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь воссоздать приложение C # с Angular, но я пытаюсь заставить код работать синхронно, как в 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 голосов
/ 09 мая 2019

Вы можете запустить его один за другим внутри оператора "then". Вложенные обещания. Если вы используете Angular 2 и выше, вы можете попробовать вложить свою логику в подписчиков вместо обещаний.

 this.MyPromise1().then(result => {
    this.MyPromise2().then(result2 => {
    this.MyPromise3().then(result3 => {
     and so on..
    })
    })
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...