Size: a a a

Советский Angular

2021 February 20

DP

Dima Puris 👨‍💻... in Советский Angular
Вертихвост キバ 🏡🦊
@DimaPuris, что скажешь про Frontend посиделки?
Топовые, мне зашло)
источник

P

Pavel b in Советский Angular
Привет, вот читаю статью про кэширование запросов https://medium.com/angular-in-depth/fastest-way-to-cache-for-lazy-developers-angular-with-rxjs-444a198ed6a6

И меня очень смущает решение:
configs: Observable<Config[]>;

getConfigs(): Observable<Config[]> {
       if (!this.configs) {
           this.configs = this.http....
       }
       return this.configs;
}
clearCache() {
       this.configs = null;
}


Т.е. если кто-то уже подписался на this.configs до clearCache, останется подписан на старый obserable, ссылка на который внутри этого сервиса будет потеряна, и новый актуальные конфиги никогда не получит
источник

E

Eugene in Советский Angular
Pavel b
Привет, вот читаю статью про кэширование запросов https://medium.com/angular-in-depth/fastest-way-to-cache-for-lazy-developers-angular-with-rxjs-444a198ed6a6

И меня очень смущает решение:
configs: Observable<Config[]>;

getConfigs(): Observable<Config[]> {
       if (!this.configs) {
           this.configs = this.http....
       }
       return this.configs;
}
clearCache() {
       this.configs = null;
}


Т.е. если кто-то уже подписался на this.configs до clearCache, останется подписан на старый obserable, ссылка на который внутри этого сервиса будет потеряна, и новый актуальные конфиги никогда не получит
просто используйте shareReplay(1) или publishReplay(1) + refCount()
источник

E

Eugene in Советский Angular
а, статья про это
источник

P

Pavel b in Советский Angular
Eugene
просто используйте shareReplay(1) или publishReplay(1) + refCount()
вот как раз пытаюсь понять разницу между ними, как сказать этому observabable что данные могли измениться и запросить заново?
источник

P

Pavel b in Советский Angular
Eugene
а, статья про это
Статья про это, только вопрос мой не про это :)
источник

AS

Anton Shvets in Советский Angular
Pavel b
вот как раз пытаюсь понять разницу между ними, как сказать этому observabable что данные могли измениться и запросить заново?
запросить заново можно так s = new Subject(); s.pipe(switchMap(() => request()));  рефреш - s.next()
источник

AS

Anton Shvets in Советский Angular
т.е. ты делаешь контролируемый исходный поток, слушая который запрашиваются новые данные
источник

P

Pavel b in Советский Angular
Anton Shvets
запросить заново можно так s = new Subject(); s.pipe(switchMap(() => request()));  рефреш - s.next()
да, это очивидное решение, но subject будет висеть в памяти всегда, хотя это уже другая проблема
источник

AS

Anton Shvets in Советский Angular
Pavel b
да, это очивидное решение, но subject будет висеть в памяти всегда, хотя это уже другая проблема
почему всегда? отпишешься от него, он будет съеден
источник

AS

Anton Shvets in Советский Angular
внутри shareReplay тоже живет сабжект
источник

P

Pavel b in Советский Angular
т.е. когда все отписываются от чего-то с refCount, то события не эмитятся и в shareReplay не хранятся последние данные, но подписаться потом опять на это можно?
источник

AS

Anton Shvets in Советский Angular
Pavel b
т.е. когда все отписываются от чего-то с refCount, то события не эмитятся и в shareReplay не хранятся последние данные, но подписаться потом опять на это можно?
если ты можешь подписаться на что-то, значит ссылка на это что-то сохраняется и объект в памяти еще существует.
Это все равно что прочитать переменную еще раз
источник

P

Pavel b in Советский Angular
ну  просто тут технически не очень понимаю внутренности multicasting и complete subject.
Вот например у меня есть observable с share(), ссылка на него, если я на него подпишусь после emit, то ничего не получу. Вопрос не будет ли такое же с shareReplay, если я подпишусь на него после того как все подписчики отпишутся, и refacount внутри завершит его
источник

AS

Anton Shvets in Советский Angular
Pavel b
ну  просто тут технически не очень понимаю внутренности multicasting и complete subject.
Вот например у меня есть observable с share(), ссылка на него, если я на него подпишусь после emit, то ничего не получу. Вопрос не будет ли такое же с shareReplay, если я подпишусь на него после того как все подписчики отпишутся, и refacount внутри завершит его
источник

P

Pavel b in Советский Angular
источник

АР

Алексей Романченко... in Советский Angular
Сегодня ещё не читал про клабхаус ничего. Напишите плз. Всем привет
источник

M

Mixer in Советский Angular
Алексей Романченко
Сегодня ещё не читал про клабхаус ничего. Напишите плз. Всем привет
ахахах
источник

AS

Anton Shvets in Советский Angular
Алексей Романченко
Сегодня ещё не читал про клабхаус ничего. Напишите плз. Всем привет
хочешь инвайт? хочешь?
источник

ДМ

Денис Макаров... in Советский Angular
Алексей Романченко
Сегодня ещё не читал про клабхаус ничего. Напишите плз. Всем привет
ор
источник