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?

Simon Boudrias
  • 42,953
  • 16
  • 99
  • 134

1 Answers1

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);
Brandon
  • 38,310
  • 8
  • 82
  • 87