| name | rxjs-observable-pattern |
| description | null |
Observable Pattern
Category: rxjs · Status: 🟢 Active
When to use
Khi xử lý luồng giá trị bất đồng bộ theo thời gian (event, request, websocket) bằng Observable.
Steps
- Dùng Observable khi có nhiều giá trị theo thời gian; Promise chỉ hợp 1 giá trị.
- Hiểu cold vs hot: cold tạo nguồn riêng mỗi subscribe (HTTP), hot chia sẻ nguồn (event/subject).
- Dùng
share/shareReplay khi cần multicast một nguồn cold cho nhiều subscriber.
- Mọi
subscribe đều phải có đường hủy (unsubscribe/takeUntil/async pipe).
- Giữ side-effect trong
tap/subscribe callback, không trong operator biến đổi.
Template
const clicks$ = fromEvent(button, 'click');
const user$ = http.get<User>('/api/me');
const sub = user$.subscribe({
next: (user) => render(user),
error: (err) => showError(err),
});
sub.unsubscribe();
Example
Good: chọn Observable cho luồng nhiều giá trị, hiểu cold/hot, share khi cần, luôn hủy.
Avoid: subscribe không hủy, side-effect trong map, lạm dụng Observable cho việc 1 phát.
Checklist