Sto utilizzando il tubo asincrono Angular2 per trasmettere i valori nel DOM. Ecco un esempio reale semplice:Gestione degli errori con il tubo asincrono Angular2
const stream = Observable.interval(1000)
.take(5)
.map(n => { if (n === 3) throw "ERROR"; return n; });
<div *ngFor="for num of stream | async">
{{num}}
</div>
<div id="error"></div>
Quello che vorrei fare è di avere la sequenza di 1-5 visualizzati, ma sulla voce di errore (3), in qualche modo popolare la #error
div con il messaggio di errore.
Questo sembra richiedere due cose: prima è la capacità del tubo asincrono angolare di fare qualcosa di intelligente con errori, di cui non vedo alcun segno. Guardando il codice sorgente, apparentemente lancia un'eccezione JS, che non sembra troppo amichevole.
Secondo è la possibilità di riavviare o continuare la sequenza dopo l'errore. Ho letto su catch
e onErrorResumeNext
e così via, ma tutti coinvolgono un'altra sequenza che verrà commutata su un errore. Ciò complica enormemente la logica della generazione del flusso, sul quale vorrei semplicemente inserire una serie di numeri (in questo semplice esempio). Ho la sensazione di affondare che una volta che si verifica un errore il gioco è finito e l'osservabile è completato e può essere "riavviato" solo con un altro osservabile. Sto ancora imparando osservabili; è questo il caso?
Quindi la mia domanda è duplice:
- possibile reindirizzare asincrona di Angular2 fare qualcosa di intelligente con errori?
- Gli osservabili hanno un modo semplice per continuare dopo un errore?
La mia comprensione è che abbiamo bisogno di usare tubo asincrono, solo quando siamo sicuri che non ci sono errori, è corretto? – refactor