Size: a a a

Советский Angular

2019 December 04

АО

Алексей Охрименко in Советский Angular
Dmitry Teplov
но мы каждый раз получаем из функции новый поток с combineLatest
source$ => combineLatest([source$, new$]).pipe(...))
CombineLatest
https://rxviz.com/v/38j4gDnO

SwitchMap
https://rxviz.com/v/RoQzqmkO

CombineLatest создает новый поток но ложит туда что-то только тогда когда A или B обновились (при условии что оба сгенерировали значение)

SwitchMap создает новый поток но ложит туда только то что приходит из потока B если! поток B успел что-то вернуть до новоого события в потоке A


Для Suggest текста (который я так понимаю на Input весит) SwitchMap просто не нужен ибо события в нем «синхронны»
источник

S

Smooth Operator in Советский Angular
Ля какой
источник

KA

Kulagin Alex in Советский Angular
Smooth Operator
Ля какой
второй в жизни день тыкаю клавишы
источник

S

Smooth Operator in Советский Angular
Kulagin Alex
второй в жизни день тыкаю клавишы
Лунную сонату уже могешь?
источник

KA

Kulagin Alex in Советский Angular
Smooth Operator
Лунную сонату уже могешь?
не пробовал
источник

DT

Dmitry Teplov in Советский Angular
Алексей Охрименко
CombineLatest
https://rxviz.com/v/38j4gDnO

SwitchMap
https://rxviz.com/v/RoQzqmkO

CombineLatest создает новый поток но ложит туда что-то только тогда когда A или B обновились (при условии что оба сгенерировали значение)

SwitchMap создает новый поток но ложит туда только то что приходит из потока B если! поток B успел что-то вернуть до новоого события в потоке A


Для Suggest текста (который я так понимаю на Input весит) SwitchMap просто не нужен ибо события в нем «синхронны»
https://stackblitz.com/edit/rxjs-7trdg9?devtoolsheight=60

хмм
окей, почему-то подписывается только один раз
интересно, не понимаю пока, как это работает, если функция withSource2 каждый раз выполняется
источник

АО

Алексей Охрименко in Советский Angular
Dmitry Teplov
https://stackblitz.com/edit/rxjs-7trdg9?devtoolsheight=60

хмм
окей, почему-то подписывается только один раз
интересно, не понимаю пока, как это работает, если функция withSource2 каждый раз выполняется
const source1$ = sourceFactory("source1", 1000);
const source2$ = sourceFactory("source2", 2000);

function withSource2() {
 return withLatestFrom(source2$);
}

source1$.pipe(withSource2()).subscribe(result => console.log(result));
источник

DT

Dmitry Teplov in Советский Angular
Алексей Охрименко
const source1$ = sourceFactory("source1", 1000);
const source2$ = sourceFactory("source2", 2000);

function withSource2() {
 return withLatestFrom(source2$);
}

source1$.pipe(withSource2()).subscribe(result => console.log(result));
но  мы не будем реагировать на новые значения в source2$, эмитить будет только когда новое значение приходит в source1$
источник

DT

Dmitry Teplov in Советский Angular
таки надо использовать combineLatest
источник

АО

Алексей Охрименко in Советский Angular
Dmitry Teplov
таки надо использовать combineLatest
тогда в чем проблема с?
const source1$ = sourceFactory("source1", 1000);
const source2$ = sourceFactory("source2", 2000);

function withSource2() {
 return source$ => combineLatest([source$, source2$])
}

source1$.pipe(withSource2()).subscribe(result => console.log(result));
источник

DT

Dmitry Teplov in Советский Angular
Алексей Охрименко
тогда в чем проблема с?
const source1$ = sourceFactory("source1", 1000);
const source2$ = sourceFactory("source2", 2000);

function withSource2() {
 return source$ => combineLatest([source$, source2$])
}

source1$.pipe(withSource2()).subscribe(result => console.log(result));
уже ни в чём, я думал каждый раз при новом значении в source1$ будет заново подписываться на source2$
источник

DT

Dmitry Teplov in Советский Angular
но практика показывает, что нет
источник

DT

Dmitry Teplov in Советский Angular
спасибо
источник

АО

Алексей Охрименко in Советский Angular
combineLatest не подписывается каждый раз, всего 1
источник

АО

Алексей Охрименко in Советский Angular
Dmitry Teplov
спасибо
незачто
источник

DT

Dmitry Teplov in Советский Angular
Алексей Охрименко
combineLatest не подписывается каждый раз, всего 1
я почему-то думал, что функция withSource2 вызывается каждый раз
а она вызывается один раз перед первым сабскрайбом
источник

DT

Dmitry Teplov in Советский Angular
ура, вот и польза, не зря сомневался
источник

АО

Алексей Охрименко in Советский Angular
pipe - это как compose из FP - один раз создается новая цепочка потоков которые потом выдают данные
источник

m

mefest in Советский Angular
😱
источник

ДМ

Денис Макаров in Советский Angular
больше 30 козуль
источник