Я использую firebase / firestore
Вот мой сервисный вызов ..
fetchClients(): Observable<Array<Client>> {
return new Observable<Array<Client>>(observer => {
this.authSvc.getAuthClaim().subscribe(authClaim => {
this.db.collection(this.collectionName, ref => ref.where("companyID", "==", authClaim.companyID))
.get()
.subscribe((snapshot: QuerySnapshot<any>) => {
const clientList = snapshot.docs.reduce((aggClientList, client) => {
const clientData = client.data();
clientData.clientID = client.id;
aggClientList.push(new Client(clientData));
return aggClientList;
}, []);
observer.next(clientList);
observer.complete();
}, (error) => {
observer.error({ error: error, friendlyError: "There was an error fetching the client list" });
observer.complete();
});
});
});
}
Он вызывается каждый раз, когда пользователь переходит на страницу списка клиентов.
В автономном режиме я замечаю больше, если вы переходите на эту страницу несколько раз, это занимает все больше и больше времени каждый раз, когда он распространяет (умножает) запрос.
Как я могу предотвратить "перекрытие" вызовов, если этодаже что происходит? Первая загрузка кажется мгновенной, а последующие - взаимозаменяемыми. Разве извлечение данных из кэшированного хранилища не должно быть почти мгновенным?
Заранее спасибо!