0

我从 Angular (7) 应用程序中的 firebase 云函数获取全日历事件,如下所示:

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,这样就不会重复了。但是第二个 eventSource 只会在第一个完成后立即显示,此时所有的 successCallbacks 都已完成,因此这里没有节省时间。

因为这似乎是很多人可能面临的一个非常基本的问题:有没有人对如何实现它有想法/解决方案?

4

0 回答 0