RxJS разделяет наблюдаемую последовательность на несколько выходных данных

Можно ли разделить один наблюдаемый поток на несколько других наблюдаемых?

Мой вариант использования — это форма, которую пользователь может отправить. Действие отправки обрабатывается в наблюдаемом объекте, и в этом действии прослушивается валидатор.

submitAction.forEach(validate)

Дело в том, что я хочу привязать действия либо к success, либо к failure проверки валидатора.

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

Я не уверен, как подобные случаи обрабатываются в реактивном программировании - возможно, разделение наблюдаемого - просто не правильное решение для решения такого рода проблем.

В любом случае, как бы вы поступили в подобном случае?


person Simon Boudrias    schedule 06.07.2014    source источник


Ответы (1)


Можете ли вы просто использовать map и filter, возможно, с share, чтобы избежать повторного выполнения логики проверки?

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);
person Brandon    schedule 10.07.2014
comment
Спасибо, это было именно то, что я искал! - person David; 16.10.2014