последовательность асинхронных / ожидающих вызовов в TypeScript - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть следующий фрагмент кода. Я сталкиваюсь с проблемой, что иногда последовательность не соблюдается, т.е. _doSomethingNext () вызывается перед _doSomethingFirst ().

<CustomModal
  onDissmiss( ): { ( )=> { 
     executeInSequence( );
  }
}
/>
private executeInSequence( ):void {
   this._fun1( ).then(( ) => { this._fun2(); });
} 
private async _fun1( ):void {
  const result: IResultArray[] = await httpClient1.getData ();
    if (!result) {
        this._doSomethingFirst();
    }
}
private async _fun2( ):void {
  const result: IResultArray[] = await httpClient2.getData ();
    if (!result) {
        this._doSomethingNext();
    }
}

Любая идея, почему это происходит и как обеспечить последовательность и только один вызов для ожидания вызовов getData ().

1 Ответ

1 голос
/ 08 апреля 2020

Вы должны иметь операторы return и asyn c ключевое слово, подобное этому;

private async _fun1( ) {
  const result: IResultArray[] = await httpClient1.getData ();
    if (!result) {
        return this._doSomethingFirst();
    }
}

private async _fun2( ) {
  const result: IResultArray[] = await httpClient2.getData ();
    if (!result) {
        return this._doSomethingNext();
    }
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...