Мне было интересно, можно ли предположить, что после использования оператора крана побочный эффект внутри него завершился.
Мой вариант использования с ngrx.
...
tap(() => {
this.store.dispatch(new SetValue("Hello World"));
}
}),
switchMap(() => this.store),
select(state => state.value),
tap(state => {
if (state === undefined) {
throw new Error("Couldn't find value");
}
})
SetValue - это класс, который реализует ngrx
export class SetValue implements Action {
readonly type = SET_VALUE;
constructor(public payload: string) {}
}
То, что я пытаюсь реализовать, - это установить значение в хранилище, а затем проверить, действительно ли оно установлено.
Могу ли я считать, что отправка завершена после нажатия оператора?
Ответ
Я использовал это на Angular Router Guard , чтобы установить начальное состояние по параметрам в URL, поэтому я закончил фильтрацию, чтобы продолжить, только когда в хранилище появилось новое значение
...
tap(() => this.store.dispatch(new SetValue("Hello World"))),
switchMap(() => this.store),
select(state => state.value),
filter(value => value === "Hello World"),
take(1)