Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular do rxjs操作员未使用ionic2_Angular_Typescript_Firebase Realtime Database_Ionic2_Rxjs - Fatal编程技术网

Angular do rxjs操作员未使用ionic2

Angular do rxjs操作员未使用ionic2,angular,typescript,firebase-realtime-database,ionic2,rxjs,Angular,Typescript,Firebase Realtime Database,Ionic2,Rxjs,我试图在数据从firebase获取时实现一个加载器 这是我的代码: this.handler.loadingPresent(); this.rooms = this.locationProvider.fetchRooms(); this.rooms.do(()=>{ this.handler.loadingDismiss(); }); 房间FirebaseListObservable使用异步管道在组件文件中订阅 那么为什么.do()操作符不工作 谢谢操作员没有修改

我试图在数据从firebase获取时实现一个加载器

这是我的代码:

  this.handler.loadingPresent();
  this.rooms = this.locationProvider.fetchRooms();
  this.rooms.do(()=>{
    this.handler.loadingDismiss();
  });
房间
FirebaseListObservable
使用异步管道在组件文件中订阅

那么为什么
.do()
操作符不工作


谢谢

操作员没有修改所调用的可观察值。它创建并返回一个新的可观察对象。所以代码应该是

this.rooms = this.locationProvider.fetchRooms();
this.rooms = this.rooms.do(() => {
  this.handler.loadingDismiss();
});
或者更简单、更惯用:

this.rooms = this.locationProvider.fetchRooms()
  .do(() => this.handler.loadingDismiss());
请注意,只有在获取房间时没有错误,您的“加载”才会被取消。如果希望不管发生什么情况都取消加载,则应使用
finally
操作符,而不是
do