и вы увидите разрыв. Еще раз спасибо.
ользую 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», чисто функциональное решение - если это возможно.