typescript - Angular 4: Cómo usar await/async dentro de subscribe
Puedo decir honestamente que await/async en Angular es realmente algo grandioso, reduce muchos corchetes, mejora la legibilidad y previene muchos errores humanos. Sin embargo, hay algo que me desconcierta mucho: cómo puedo usar await/async dentro de subscribe.
digamos
@Injectable()
export class TableCom extends BaseCom {
public subject = new Subject<any>();
}
TableCom es un proveedor que sirve como comunicador entre un componente SignalR y un componente de página.
entonces dentro del constructor del componente de la página, está usando el sujeto observable para recibir nuevos datos del componente signalr como se muestra a continuación.
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();
});
}
El problema es que this.ReadTableAsync() básicamente tiene que esperar a que this.SaveTableAsync termine antes de empezar. ¿Se puede usar await aquí? ¡Gracias de antemano!
Respuesta #1
Necesitas la palabra clave async para marcar la función como "async":
this.subscribe_table = this.com_table.Receive().subscribe(async res => {
await this.SaveTableAsync(res.data);
this.ReadTableAsync();
});
