将数据存储在本地,而不是在每次应用启动时获取数据

时间:2019-06-27 10:09:28

标签: angular typescript firebase google-cloud-firestore

要在应用程序初始化中获取数据,请使用APP_INITIALIZER。为了仅在加载数据时显示页面,我返回一个可以解决的承诺。

它工作正常,但是每次重新加载时都会获取数据,因此每次都有望解决,这会导致用户进入Web应用程序的延迟。

有旁路吗?我肯定从一开始就需要这些数据,但是不必是实时的。

缓存如何?为了启用每个文档的缓存,我使用了AngularFirestoreModule.enablePersistence()。但是,如何获取缓存的数据,如果没有缓存的数据,该如何从Firestore加载?

AppInitService:

Init(): Promise<any> {
return new Promise((resolve) => {
  this.db.collection('entries').valueChanges()
    .subscribe(val => {
      this.casesService.data = val;
      resolve(true);
    });
});}

app.module.ts

export function initializeApp1(appInitService: AppInitService) {
  return (): Promise<any> => {
    return appInitService.Init();
  };
}

providers: [
   AppInitService,
   { provide: APP_INITIALIZER, useFactory: initializeApp1, deps: [AppInitService], multi: true }
],

0 个答案:

没有答案