Size: a a a

2019 April 18

G

George in Angular Kyiv
Vladyslav Nasadiuk
Ребят есть ситуация касательно combineLatest.

Когда закидываю в него два обсерва, которые достают данные с бека, то браузер показывает что эти обсервы вызываются повторно (идет повторная загрузка на нетворк табе), хотя при этом эндпоинт которы отвечает за загрузку данных - дергается только один раз

Здесь что-то я чувствую упустил что-то критическое в том как работает Observable?
(идет повторная загрузка на нетворк табе), хотя при этом эндпоинт которы отвечает за загрузку данных - дергается только один раз

‘это как?
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
ну браузер показывает что пошла повторная загрузка данных, а сам эндпоинт на загрузку не дергается
вот и я не понимаю как) @GeorgeBorzilov

коментирую комбайн - дубль уходит
источник

VL

Vitalii Lev 🦁 in Angular Kyiv
так может он не раз дергается? или на беке проверяли? дважды 200 возвращает? может кроме комбайна еще вызывается где то, ну или в комбайне просто дважды произошло событие поэтому и дергает два раза
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
сейчас вот подебажу сервак
дважды возвращает 200 с респонсом внутри
источник

VL

Vitalii Lev 🦁 in Angular Kyiv
поставьте перед запросом после комбайн лейтеста дебагер (в том операторе где реквест уже идет или в какой то tap перед ним)
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
Наверное ситуацию не очень описал, так будет понятней:
1. Есть переменная А1: Observable - передается через асинк в чайлд
2. Есть переменная А2: Observable - передается через асинк в другой чайлд
3. Есть комбайн - который берет эти две переменные и когда оба обсерва кинут значения, должен выполнить определенное действие
4. Комбайн происходит самособой в перенте

это более полная картина)
источник

G

George in Angular Kyiv
так у тебя 2 subscription
источник

G

George in Angular Kyiv
похоже
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
наверное получается я избыточно юзаю асинк
источник

G

George in Angular Kyiv
Vladyslav Nasadiuk
Наверное ситуацию не очень описал, так будет понятней:
1. Есть переменная А1: Observable - передается через асинк в чайлд
2. Есть переменная А2: Observable - передается через асинк в другой чайлд
3. Есть комбайн - который берет эти две переменные и когда оба обсерва кинут значения, должен выполнить определенное действие
4. Комбайн происходит самособой в перенте

это более полная картина)
A1.pipe(share())
источник

RK

Roman Kysenko in Angular Kyiv
Комбайн поменять на forkJoin?
источник

G

George in Angular Kyiv
вообще это cold vs hot observables похоже
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
самое интересное, что бек дергается на самом деле один раз) и время ответа на запрос 1 и дубля - абсолютно одинаковое)
источник

DG

Danil Gudz in Angular Kyiv
share тут правильно написали
источник

DG

Danil Gudz in Angular Kyiv
a$ = service1.get(...).pipe(share());
b$ = service2.get(...).pipe(share());
combineLatest(a$,b$).subscribe(([a,b]) => doAction(a,b))

-----
<component [a]="a$|async" [b]="b$|async"...
источник

G

George in Angular Kyiv
2 запроса, но бек дергается раз 🤔
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
спасибо, никогда не юзал такое, почитаю)
источник

G

George in Angular Kyiv
share или shareReplay
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
George
2 запроса, но бек дергается раз 🤔
меня смущает что время ответа одинаковое)
источник

VN

Vladyslav Nasadiuk in Angular Kyiv
Danil Gudz
a$ = service1.get(...).pipe(share());
b$ = service2.get(...).pipe(share());
combineLatest(a$,b$).subscribe(([a,b]) => doAction(a,b))

-----
<component [a]="a$|async" [b]="b$|async"...
спасибо!
источник