Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RxJS split observable sequence in multiple output

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?

like image 979
Simon Boudrias Avatar asked Jul 06 '14 07:07

Simon Boudrias


1 Answers

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);
like image 122
Brandon Avatar answered Sep 20 '22 06:09

Brandon