jestem stara się obsłużyć błędy z Rx w sposób spodziewałem.RxJS - Catch i prowadzić
Kiedy mają widoczny (na przykład ze strumienia click) i wystąpi wyjątek chcę go złapać, ale prowadzić. Wszystkie rozwiązania, które próbowałem złapać błąd, a następnie zakończyć obserwowalne. Czy istnieje sposób na złapanie i kontynuowanie?
Jako przykład, poniżej Obserwowalne emituje „1”, a następnie „Error”, a nie „3”.
var range = Rx.Observable.range(1,3)
.map(function(i){
if(i === 2){
throw "Error";
} else {
return i;
}
})
.catch(function(e){
return Rx.Observable.return(e)
});
range.subscribe(function(i){
console.log(i)
});
Jedynym sposobem na kontynuację sekwencji źródłowej nie jest rzucanie. Czy możesz nam powiedzieć, jaki jest twój prawdziwy przypadek użycia? –
Obserwowalna umowa polega na tym, że musi ona wyemitować dla obserwatora wzór: (OnNext) * (OnCompleted | OnError). Tak więc, gdy sekwencja emituje OnError, kończy się. –
@OliverWeichhold prawdziwym przypadkiem jest obserwowalne zdarzenie click, które można zaobserwować w postaci 'flatMap()' na żądanie http. Jeśli/kiedy żądanie http nie powiedzie się, obserwowalne kliknięcie przestaje emitować. – MaxWillmo