| name | rxjs-operator-selection |
| description | null |
Operator Selection
Category: rxjs · Status: 🟢 Active
When to use
Khi cần chọn đúng operator RxJS cho biến đổi/làm phẳng luồng (map, các *Map, debounceTime).
Steps
map để biến đổi đồng bộ từng giá trị; không dùng cho Observable lồng.
switchMap khi chỉ cần kết quả mới nhất, hủy request cũ (search, autocomplete).
mergeMap khi chạy song song và giữ mọi kết quả (không quan tâm thứ tự).
concatMap khi cần tuần tự, giữ thứ tự, chờ xong cái trước (ghi tuần tự).
debounceTime/throttleTime để giảm tần suất; distinctUntilChanged bỏ lặp.
Template
input$.pipe(debounceTime(300), switchMap((q) => api.search(q)));
files$.pipe(mergeMap((f) => api.upload(f)));
saves$.pipe(concatMap((p) => api.save(p)));
Example
Good: switchMap cho search, mergeMap cho song song, concatMap cho tuần tự, debounce input.
Avoid: mergeMap cho search (race kết quả cũ), switchMap cho ghi tuần tự (mất dữ liệu), map lồng Observable.
Checklist