RxJS split observable sequence in multiple output
Asked Answered
F

1

11

Is it possible to split a single observable flux in multiple other observables?

My use case is a form that a user can submit. The submit action is handled in an observable, and on this action, there's a validator listening.

submitAction.forEach(validate)

The thing is I want to bind actions to either the success or the failure of the validator check.

validationFailure.forEach(outputErrors)
validationSuccess.forEach(goToPage)

I'm not sure how similar cases are handled in reactive programming - it may be that splitting the observable is just not the right solution for handling this kind of issue.

Anyway, how would you handle a similar case?

Fritts answered 6/7, 2014 at 7:27 Comment(0)
C
14

Can you just use map and filter, possibly with share to avoid repeatedly executing the validation logic?

var submitAction = // some Rx.Observable
var validationResult = submitAction.map(validate).share();
var success = validationResult.filter(function (r) { return !!r; });
var failure = validationResult.filter(function (r) { return !r; });

success.subscribe(goToPage);
failure.subscribe(outputErrors);
Crematory answered 10/7, 2014 at 19:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.