и вы увидите разрыв. Еще раз спасибо.

ользую RsJS 5 (5.0.1) для кэширования в Angular 2. Это работает хорошо.

Мясо функции кэширования:

const observable = Observable.defer(
    () => actualFn().do(() => this.console.log('CACHE MISS', cacheKey))
  )
  .publishReplay(1, this.RECACHE_INTERVAL)
  .refCount().take(1)
  .do(() => this.console.log('CACHE HIT', cacheKey));

actualFn этоthis.http.get('/some/resource').

Как я уже сказал, это отлично работает для меня. Кеш возвращается из наблюдаемого на времяRECACHE_INTERVAL, Если запрос сделан после этого интервала,actualFn() будет называться.

То, что я пытаюсь выяснить, это когдаRECACHE_INTERVAL истекает иactualFn() называется - как вернуть последнее значение. Между временем, когдаRECACHE_INTERVAL истекает иactualFn() воспроизводится, что наблюдаемая не возвращает значение. Я хотел бы избавиться от этого разрыва во времени и всегда возвращать последнее значение.

Я мог бы использовать побочный эффект и сохранить последний вызов хорошего значения.next(lastValue) в ожидании ответа HTTP, но это кажется наивным. Я хотел бы использовать способ «RxJS», чисто функциональное решение - если это возможно.

Ответы на вопрос(3)

Ваш ответ на вопрос