2014-07-06 12 views
6

È possibile dividere un singolo flusso osservabile in più altri osservabili?RxJS sequenza osservabile divisa in più uscite

Il mio caso d'uso è un modulo che un utente può inviare. L'azione di invio è gestita in modo osservabile e su questa azione c'è un validatore in ascolto.

submitAction.forEach(validate) 

Il fatto è che voglio legare le azioni né al success o failure del controllo validatore.

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

Io non sono sicuro di come i casi simili vengono gestiti nella programmazione reattiva - può essere che la divisione del osservabile non è solo la giusta soluzione per la gestione di questo tipo di problema.

In ogni caso, come gestiresti un caso simile?

risposta

9

È possibile utilizzare solo map e filter, possibilmente con share per evitare di eseguire ripetutamente la logica di convalida?

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); 
+0

Grazie, questo era esattamente quello che stavo cercando! – David

Problemi correlati