SwitchMap отличается свойством в RxJsJavascript

Форум по Javascript
Ответить
Гость
 SwitchMap отличается свойством в RxJs

Сообщение Гость »


Допустим, у меня есть поток действий. Каждому действию присваивается некоторый идентификатор. Вот так:

const action$ = of({ id: 1 }, { id: 2 }, { id: 1 }); Теперь для каждого действия я хочу выполнить некоторую логику в switchMap:

actions$.pipe(switchMap(a => /* некоторая отменяемая логика */)).subscribe(...); Проблема в том, что каждое выполненное действие отменяет предыдущую «некую отменяемую логику».

Можно ли отменить «некую отменяемую логику» на основе действия id, предпочтительно оператора? Что-то вроде:

actions$.pipe(switchMapBy('id', a => /*некоторая отменяемая логика */)).subscribe(...) По сути, текущее поведение с switchMap:
1. actions$ выдает идентификатор №1. switchMap подписывается на вложенный наблюдаемый объект.
2. actions$ выдает идентификатор №2. switchMap отписывается от предыдущего вложенного наблюдаемого. Подписывается на новую.
3. actions$ выдает идентификатор №1. switchMap снова отписывается от предыдущего вложенного наблюдаемого. Подписывается на новую.

Ожидаемое поведение:
1. actions$ выдает идентификатор №1. switchMap подписывается на вложенный наблюдаемый объект.
2. actions$ выдает идентификатор №2. switchMap снова подписывается на вложенный наблюдаемый объект (на этот раз с номером 2). И вот в чем разница: это не отменяет вариант №1.
3. actions$ выдает идентификатор №1. switchMap отписывается от вложенного наблюдаемого для #1. Подписывается снова, номер 1.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»