Tôi đang sử dụng ống không đồng bộ Angular2 để truyền các giá trị vào DOM. Dưới đây là một ví dụ đơn giản thực:Xử lý lỗi với ống không đồng bộ 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>
Những gì tôi muốn làm là phải có trình tự của 1-5 hiển thị, nhưng vào mục lỗi (3), bằng cách nào đó cư div #error
với thông báo lỗi.
Điều này dường như đòi hỏi hai điều: đầu tiên là khả năng của ống không đồng bộ góc để làm điều gì đó thông minh với các lỗi, mà tôi thấy không có dấu hiệu. Nhìn vào mã nguồn, rõ ràng nó ném một ngoại lệ JS, mà dường như không quá thân thiện.
Thứ hai là khả năng khởi động lại hoặc tiếp tục chuỗi sau lỗi. Tôi đã đọc về catch
và onErrorResumeNext
, v.v. nhưng tất cả đều liên quan đến một chuỗi khác sẽ bị chuyển sang lỗi. Điều này làm phức tạp logic của việc tạo luồng, mà trên đó tôi chỉ muốn đặt một chuỗi các số (trong ví dụ đơn giản này). Tôi có cảm giác chìm mà một khi một lỗi xảy ra trò chơi kết thúc và quan sát được hoàn thành và chỉ có thể được "khởi động lại" với một quan sát khác nhau. Tôi vẫn đang học quan sát; điều này có đúng không?
Vì vậy, câu hỏi của tôi có hai phần:
- ống async Angular2 của thể làm điều gì đó thông minh với các lỗi?
- Quan sát có một số cách đơn giản để tiếp tục sau khi có lỗi không?
hiểu biết của tôi là chúng ta cần phải sử dụng async pipe, chỉ khi chúng ta chắc chắn rằng không có lỗi, đúng không? – refactor