web-dev-qa-db-fra.com

Angular 4: Comment utiliser wait / async dans subscribe

En toute honnêteté, je peux dire wait/async in angular est vraiment une excellente chose, cela réduit énormément d’accolades, améliore la lisibilité et évite beaucoup d’erreur humaine. Cependant, une chose m’énerve beaucoup. comment puis-je utiliser wait/async dans subscribe.

disons

 @Injectable()
export class TableCom extends BaseCom {
  public subject = new Subject<any>();

}

TableCom est un fournisseur qui sert de communicateur entre un composant signalr et un composant page.

ainsi, à l'intérieur du constructeur de composant de page, il utilise le sujet observable pour recevoir de nouvelles données de composant de signal, comme indiqué ci-dessous.

constructor(protected nav: NavController,
        protected db: Storage,
        protected alert: AlertController,
        protected order: OrderData,
        protected translate: TranslateService,
        public navParams: NavParams,
        public toastCtrl: ToastController,
        private table_data: TableData,
        private load: LoadingController,
        private http: Http,
        private com_table: TableCom

    )
    {
        super(nav, db, alert, order, translate, undefined, false);
        this.previous_page = navParams.get('previous_page');
        this.subscribe_table = this.com_table.Receive().subscribe(res =>
        {
            await this.SaveTableAsync(res.data);
            this.ReadTableAsync();
        });
    }

le problème est que le this.ReadTableAsync () doit essentiellement attendre que this.SaveTableAsync soit terminé avant de commencer. attendre peut être atteint ici? Merci d'avance !!

14
Steven Li

Vous avez besoin du mot clé async pour marquer la fonction comme "asynchrone":

this.subscribe_table = this.com_table.Receive().subscribe(async res => {
    await this.SaveTableAsync(res.data);
    this.ReadTableAsync();
});
26
ideaboxer