Mogę szczerze powiedzieć, że oczekiwanie/asynchronizacja w kanciastości jest naprawdę świetną rzeczą, redukuje wiele nawiasów klamrowych, poprawia czytelność i zapobiega wielu błędom ludzkim. Jednak jedna rzecz mnie zastanawia. jak mogę korzystać z oczekiwania/asynchronizacji wewnątrz subskrybowania.Angular 4: Jak używać oczekujących/asynchronicznych w subskrypcji
powiedzmy
@Injectable()
export class TableCom extends BaseCom {
public subject = new Subject<any>();
}
TableCom jest dostawcą służy jako komunikator pomiędzy składnikiem signalr i części strony.
Tak więc wewnątrz konstruktora komponentu strony używa obserwowalnego obiektu do otrzymywania nowych danych z komponentu signalr, jak pokazano poniżej.
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();
});
}
kwestia jest taka, że this.ReadTableAsync() w zasadzie musi czekać this.SaveTableAsync być zakończone przed rozpoczęciem. Czekać tutaj można osiągnąć? z góry dziękuję !!
asynchroniczny/Oczekujcie służy gdzie spodziewane są obietnice, czy 'SaveTableAsync' returnsa obietnicy? i 'await' może być użyte tylko wewnątrz' async function() {...} ' –
yes. SaveTableAsync podsumowuje pamięć jonową, która jest oparta na obietnicy. –