я извлекаю события fullcalendar из облачной функции firebase в приложении Angular (7), например:
eventSources: [
{
events: (info, successCallback, failureCallback) => {
this.http
.get(
BACKEND_URI + '?start=' + info.start + '&end=' + info.end
)
.subscribe((events: CalendarEvent[]) => {
localStorage.setItem('CalendarEventStore', JSON.stringify(events));
successCallback(events);
}, error => {
console.error(error);
failureCallback(error);
});
}
}
],
(я использую свою собственную функцию get в основном для добавления заголовков авторизации через перехватчик).
Как видите, я сохраняю полученные события в localStorage, чтобы сделать их доступными для следующего запроса календаря.Это в основном для случаев, когда нет подключения к Интернету, поскольку предполагается, что его можно использовать как PWA, но облачные функции Firebase работают очень медленно, поэтому было бы неплохо показывать события из хранилища при загрузке новых.Проблема возникает с загрузкой сохраненных событий.Я попытался добавить их в качестве второго источника событий, например:
eventSources: [
{
// code above..
},
{
events: JSON.parse(localStorage.getItem('CalendarEventStore')) || {}
},
],
Идея состояла в том, чтобы удалить второй источник событий, как только первый перезвонил, чтобы не было дубликатов.Но второй eventSource будет показан только после того, как будет завершен первый, когда были сделаны все successCallbacks, поэтому здесь не сохраняется время.
Поскольку это кажется очень простой проблемой, что многие люди могут бытьсталкивается: у кого-нибудь есть идея / решение о том, как это реализовать?