Я пытаюсь реализовать загрузчик, пока данные выбирают форму FireBase.

Это мой код:

  this.handler.loadingPresent();
  this.rooms = this.locationProvider.fetchRooms();
  this.rooms.do(()=>{
    this.handler.loadingDismiss();
  });

Помещения FirebaseListObservable подписываются в файле компонента с помощью | асинхронный канал.

Так почему оператор .do() не работает?!

Благодарность

1
Khaled Ramadan 12 Мар 2018 в 10:04

1 ответ

Лучший ответ

Оператор не изменяет наблюдаемый, он вызывается. Это создает и возвращает новый наблюдаемый. Так что код должен быть

this.rooms = this.locationProvider.fetchRooms();
this.rooms = this.rooms.do(() => {
  this.handler.loadingDismiss();
});

Или, проще и идиоматичнее:

this.rooms = this.locationProvider.fetchRooms()
  .do(() => this.handler.loadingDismiss());

Обратите внимание, что ваша «загрузка» будет уволена только в том случае, если при выборе номеров нет ошибок. Если вы хотите, чтобы ваша загрузка, чтобы уволить, независимо от того, что вы должны использовать оператор finally, а не do.

3
JB Nizet 12 Мар 2018 в 10:09