withLarestFrom не работает внутри switchMap - PullRequest
1 голос
/ 20 апреля 2020

Я новичок в Rx Js. Может кто-нибудь помочь мне понять, почему withLatestFrom замерзает, когда я обертываю его внутри switchMap?

withLatestFromNoCancel() {
    const hi$ = of("hi");
    const click$ = fromEvent(document.getElementById("click1"), "click");

    const example = click$.pipe(withLatestFrom(click$, hi$));
    const subscribe = example.subscribe(val => console.log(val));
}
withLatestFromStrangeWithSwitchMap() {
    const hi$ = of("hi");
    const click$ = fromEvent(document.getElementById("click1"), "click");

    const example = click$.pipe(
      switchMap(e => of(e).pipe(withLatestFrom(click$, hi$))),
    );
    const subscribe = example.subscribe(val => console.log(val));
}

1 Ответ

1 голос
/ 20 апреля 2020

withLatestFrom испускается только тогда, когда излучается его источник Observable. В вашем случае это of(e), который излучает только один раз, а затем завершается, поэтому он никогда не реагирует на click$, hi$.

Так что это не из-за switchMap. Вот так withLatestFrom работает.

...