J'essaie de comprendre comment mettre en œuvre une opération conditionnelle simple dans un observable.
this.deactivate$
.pipe(
filter((canDeactivate) => !canDeactivate),
switchMap(() => Observable.of(window.confirm("message")))
);
Ce que je veux obtenir, c'est que:
if (canDeactivate) {
return canDeactivate;
}
else {
return window.confirm("message");
}
Le problème sur le premier code ci-dessus est que lorsque je filtre la valeur émise, le reste des opérateurs n'est pas exécuté et le flux s'arrête pour remplir la valeur émise.
Des idées?
window.confirm
Est bloquant vous pouvez donc simplement utiliser un opérateur map()
. L'appel de switchMap à of(window.confirm(..))
arrêtera tout de même l'exécution de JavaScript.
this.deactivate$
.pipe(
map(canDeactivate => canDeactivate ? canDeactivate : window.confirm("message"))
);