web-dev-qa-db-ja.com

Angular RxJS:条件演算子(ある場合)

私はオブザーバブルに単純な条件付き演算を実装する方法を理解しようとしています。

this.deactivate$
    .pipe(
        filter((canDeactivate) => !canDeactivate),
        switchMap(() => Observable.of(window.confirm("message")))
    );

私が入手したいのは、

if (canDeactivate) {
    return canDeactivate;
}
else {
    return window.confirm("message");
}

上記の最初のコードの問題は、放出された値をフィルタリングしているときに、残りの演算子が実行されず、放出された値を入力するためにストリームが停止することです。

何か案は?

5
Jordi

_window.confirm_はblockingなので、map()演算子を使用できます。 switchMapをof(window.confirm(..))に呼び出すと、とにかくJavaScriptの実行が停止します。

_this.deactivate$
    .pipe(
        map(canDeactivate => canDeactivate ? canDeactivate : window.confirm("message"))
    );
_
0
Reactgular