我正在尝试在从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
。