Gợi ý RxJS [bộ lọc, takeWhile]

Jan 06 2023
Gợi ý này đề cập đến sự khác biệt giữa bộ lọc và toán tử takeWhile từ thư viện RxJS. Theo tài liệu chính thức: filter Lọc các mục do nguồn phát ra Có thể quan sát được bằng cách chỉ phát ra những mục thỏa mãn một vị từ đã chỉ định.

Gợi ý này đề cập đến sự khác biệt giữa bộ lọc và toán tử takeWhile từ thư viện RxJS .

Theo tài liệu chính thức:

lọc

Lọc các mục do nguồn phát ra Có thể quan sát được bằng cách chỉ phát ra những mục thỏa mãn một vị từ đã chỉ định.

mấtWhile

Phát ra các giá trị do nguồn phát ra Có thể quan sát miễn là mỗi giá trị thỏa mãn vị từ đã cho và sau đó hoàn thành ngay khi vị từ này không được thỏa mãn.

Do đó, cả hai toán tử đều lấy một hàm vị ngữ làm đối số đầu tiên được gọi cho mỗi giá trị do luồng nguồn phát ra.

Tuy nhiên, Observable được toán tử bộ lọc trả về sẽ không bao giờ hủy đăng ký khỏi luồng nguồn. Cần lưu ý rằng toán tử bộ lọc không thể được sử dụng để hoàn toàn hủy đăng ký khỏi nguồn Có thể quan sát được khi chức năng vị ngữ không được thỏa mãn:

Mặt khác, luồng được toán tử takeWhile trả về sẽ hủy đăng ký khỏi nguồn Có thể quan sát được và đưa ra thông báo đầy đủ sau khi hàm vị ngữ trả về giá trị sai. Do đó, toán tử takeWhile có thể được sử dụng để hủy hoàn toàn đăng ký đối với luồng nguồn dựa trên một điều kiện nhất định:

Cần lưu ý rằng nguồn Có thể quan sát không phát ra thông báo đầy đủ, tuy nhiên chức năng gọi lại được chuyển cho toán tử hoàn thiện được gọi khi kết thúc luồng có thể hoàn thành hoặc hủy đăng ký. Ngoài ra, bạn có thể kiểm soát xem giá trị cuối cùng do luồng nguồn phát ra có được chuyển đến đầu ra Có thể quan sát được hay không (đối số thứ hai của toán tử takeWhile theo mặc định là sai).

Ví dụ trực tiếp:

Nếu bạn thích gợi ý, hãy cho tôi một tràng vỗ tay