Для извлечения данных в приложении init я использую APP_INITIALIZER
.Чтобы показать страницу только при загрузке данных, я возвращаю обещание, которое разрешится.
Работает нормально, но при этом данные извлекаются при каждой перезагрузке, поэтому обещание будет разрешаться каждый раз,что приводит к задержке входа пользователя в веб-приложение.
Есть ли обход?Я определенно нуждаюсь в этих данных с самого начала, но не обязательно быть в режиме реального времени.
Как насчет кэширования? Чтобы включить кэширование для каждого документа, я использовал 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 }
],