Size: a a a

Советский Angular

2020 October 28

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
Nikita 👩🏻‍💻💭
ребят, а подскажите плз, какой оператор или еще что может мне помочь

Мне нужно реализовать следующее:
1. Есть поток с данными
2. Есть еще один поток (а точнее Subject), в который я закидываю новые данные
3. Мне нужно обновлять значение в первом потоке, забирая значение из второго

Делаю я это таким образом:

const records = [{...}];

const newRecord = this.updateRecords.asObservable().pipe(startWith(null));

this.records = combineLatest([
 of(records),
 newRecord
]).pipe(
 map(([allRecords, updatedRecord]) => {
   const newRecords = ...
   return newRecords;
 })
)


проблема здесь в том, что когда происходит эмит значения, то берется дефолтное из of(records)

подозреваю, что это должно выглядеть как-то так, чтобы оно работало

of(records).pipe(
    whenEmits((updatedRecord) => {...})
)


подскажите, есть какой-то оператор, который будет слушать эмиты другого сабджекта?
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
я только через часа два освобожусь, сорян)
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
когда кушать буду — отвечу
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
оаоаоао спасибо заранее
источник

S

Smooth Operator in Советский Angular
Nikita 👩🏻‍💻💭
ребят, а подскажите плз, какой оператор или еще что может мне помочь

Мне нужно реализовать следующее:
1. Есть поток с данными
2. Есть еще один поток (а точнее Subject), в который я закидываю новые данные
3. Мне нужно обновлять значение в первом потоке, забирая значение из второго

Делаю я это таким образом:

const records = [{...}];

const newRecord = this.updateRecords.asObservable().pipe(startWith(null));

this.records = combineLatest([
 of(records),
 newRecord
]).pipe(
 map(([allRecords, updatedRecord]) => {
   const newRecords = ...
   return newRecords;
 })
)


проблема здесь в том, что когда происходит эмит значения, то берется дефолтное из of(records)

подозреваю, что это должно выглядеть как-то так, чтобы оно работало

of(records).pipe(
    whenEmits((updatedRecord) => {...})
)


подскажите, есть какой-то оператор, который будет слушать эмиты другого сабджекта?
scan
источник

AT

Arams Tomojans in Советский Angular
Nikita 👩🏻‍💻💭
ребят, а подскажите плз, какой оператор или еще что может мне помочь

Мне нужно реализовать следующее:
1. Есть поток с данными
2. Есть еще один поток (а точнее Subject), в который я закидываю новые данные
3. Мне нужно обновлять значение в первом потоке, забирая значение из второго

Делаю я это таким образом:

const records = [{...}];

const newRecord = this.updateRecords.asObservable().pipe(startWith(null));

this.records = combineLatest([
 of(records),
 newRecord
]).pipe(
 map(([allRecords, updatedRecord]) => {
   const newRecords = ...
   return newRecords;
 })
)


проблема здесь в том, что когда происходит эмит значения, то берется дефолтное из of(records)

подозреваю, что это должно выглядеть как-то так, чтобы оно работало

of(records).pipe(
    whenEmits((updatedRecord) => {...})
)


подскажите, есть какой-то оператор, который будет слушать эмиты другого сабджекта?
https://webdraftt.com/tutorial/rxjs/reduce может оно, но если нет потыкай там среди операторов
источник

AS

Anton Shvets in Советский Angular
если нужно собирать элементы в массив то это scan, от в отличии от reduce не ждет завершения потока чтобы эмитить данные
источник

AS

Anton Shvets in Советский Angular
типа update.pipe(startWith(startValue), scan((acc, current) => acc.concat(curent)))
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
вот походу оно
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
сейчас редьюс ковыряю
источник

AT

Arams Tomojans in Советский Angular
Nikita 👩🏻‍💻💭
вот походу оно
😊
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
хм, почему-то после reduce не выполняется ничего
источник

AT

Arams Tomojans in Советский Angular
RxJS reduce() передаст следующему обработчику только конечное вычисленное значение и только тогда, когда завершится выполнение исходного Observable.
источник

AT

Arams Tomojans in Советский Angular
может поэтому
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
Arams Tomojans
RxJS reduce() передаст следующему обработчику только конечное вычисленное значение и только тогда, когда завершится выполнение исходного Observable.
аааа
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
ну да
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
чот я туплю
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
сории
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
scan() решил мою задачу в итоге!
источник

AT

Arams Tomojans in Советский Angular
🙃
источник