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.

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