do rxjs 运算符不适用于 ionic2

do rxjs operator is not working with ionic2

我正在尝试在从 firebase 获取数据时实现加载程序。

这是我的代码:

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

房间 FirebaseListObservable 是在组件文件中使用 | 订阅的异步管道。

那么为什么 .do() 运算符不起作用?!

谢谢

运算符不会修改调用它的可观察对象。它 创建并 returns 一个新的可观察对象。所以代码应该是

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

或者,更简单、更地道:

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

请注意,只有在获取房间时没有错误,您的 "loading" 才会被取消。如果您希望无论如何都关闭加载,则应使用 finally 运算符而不是 do.