在我的Ionic 2 / Angular移动应用程序中,我使用AngulaFire2从Firebase接收数据。
通常,我会在从Firebase获取数据时添加一个LoadingController,以向用户显示系统仍在运行。一旦成功接收数据或发生错误,加载器就会被解除。但是,如果用户未连接到Internet,则加载程序将永远不会停止显示 - 永远继续,因为没有提取数据且不会发生错误。
我想添加一个超时,在几秒钟后停止加载器并显示警告“无连接”。然后,用户可以继续使用已加载到localstorage的数据的应用程序。
任何想法如何实现这一点是值得赞赏的。这是一个示例代码:
ionViewDidLoad() {
let loader = this.loadingCtrl.create({
content: "Getting data..."
});
loader.present().then(() => {
// get all products
this.productService.getAllProductsOnce().subscribe(data => {
this.allProducts = data;
loader.dismiss();
}), error => {
loader.dismiss();
this.errorService.handleError(error);
};
}
}
答案 0 :(得分:1)
您可以使用RxJS - Timeout运算符。如果Observable在指定的时间内(以毫秒为单位)不会触发,则会触发错误回调:
data(iris)
table1<-iris[,-5]
a<-list()
a[[1]]<-table1[1,]
a[[2]]<-table1[2,-2]
Reduce("+",a)
不要忘记为此运营商添加导入:
this.productService.getAllProductsOnce()
.timeout(3000)
.subscribe(data => {
this.allProducts = data;
loader.dismiss();
},
error => {
loader.dismiss();
this.errorService.handleError(error);
});