如果没有可用的数据库连接,则在超时后解除加载程序

时间:2017-06-12 09:24:44

标签: angular firebase ionic-framework ionic2 angularfire2

在我的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);
      };
   }
}

1 个答案:

答案 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); });