Như tìm hiểu ở phần 1 về Rx ở bài này mình sẽ tập trung vào các operator sử dụng trong Rx java
-- Creating Observables
1.just()
Như tên gọi của hàm, toán tử chỉ phát ra các giá trị tương tự được cung cấp trong các đối số.
VD : Observable.just(1, 2, 3, 4, 5)
Ở đây,observable với toán tử just của chúng ta đã được áp dụng. Vì vậy, observable sẽ phát ra từ 1 đến 5 số nguyên.
- Có một toán tử khác : from() lấy mảng của một đối tượng làm đầu vào và phát ra đối tượng lần lượt giống như toán tử just (). Dưới đây là các đoạn mã để tạo ra số nguyên từ 1 đến 5 bằng cách sử dụng toán tử from ().
Observable.from(new Integer[]{1, 2, 3, 4, 5});
-- Filtering Operators:
- Các toán tử lọc sẽ lọc ra các đối tượng dòng dữ liệu dựa trên một số biểu thức và chỉ phát ra các đối tượng dữ liệu thỏa mãn biểu thức.
1.filter() :
Đôi khi chúng ta muốn tinh chỉnh sự kiện cụ thể chỉ được phát ra bởi observable. Giả sử chúng ta chỉ muốn chỉ phát ra các số lẻ trong số các phần tử được phát ra bởi Observable. Chúng ta có thể đạt được điều này bằng cách sử dụng một toán tử được gọi là filter ().
Như tên gợi ý toán tử bộ lọc, lọc các mục được phát ra bởi một Observable. Sử dụng filter() chúng ta có thể quyết định phát ra đối tượng hay không dựa trên một số điều kiện.
2. skip():
skip(n) sẽ loại bỏ n mục đầu tiên được phát ra bởi một Observable và phát ra dữ liệu sau n phần tử. Vì vậy, skip (2) sẽ bỏ qua phát 2 phần tử đầu tiên và bắt đầu từ phát ra phần tử thứ 3.
Vì vậy, ví dụ của chúng tôi, nếu chúng tôi áp dụng toán tử skip (2), nó sẽ chỉ phát ra 3, 4 và 5 số nguyên.
3. take(): take() là trái ngược với toán tử skip (). take (n) sẽ chỉ phát ra n phần tử dữ liệu đầu tiên và bỏ qua tất cả các phần tử dữ liệu sau n phần tử được phát ra.
- takeLast() sẽ chỉ phát ra phần tử cuối cùng từ luồng dữ liệu.
- Trái ngược với takeLast() toán tử takeFirst () sẽ chỉ phát ra phần tử đầu tiên của luồng dữ liệu và bỏ qua các phần tử dữ liệu tiếp theo.
-- Combining Operators:
- Các toán tử làm việc với nhiều observable để tạo một observable duy nhất
1. merge():
Toán tử merge() kết hợp nhiều Observable thành một bằng cách hợp nhất các phần tử được phát ra bởi các Observable.Toán tử merge() có thể xen kẽ các kết quả đầu ra vì nó phát ra dữ liệu từ cả hai Observable được đồng thời ngay khi dữ liệu có sẵn để phát.
2. zip():
zip() kết hợp phát xạ của nhiều operator với nhau thông qua một chức năng được chỉ định và phát ra các mục đơn lẻ cho mỗi tổ hợp dựa trên kết quả của chức năng này.
Đây là ví dụ mà bạn có thể kết hợp các chuỗi và luồng dữ liệu số nguyên thành một ZipObject (lớp tùy chỉnh) và phát ra chúng dưới dạng luồng dữ liệu cuối cùng.
-- Mathematical and Aggregate Operators
1. concat(): Toán tử Concat nối kết quả đầu ra của nhiều Observable để chúng hoạt động giống như một Observable duy nhất.
Giả sử bạn có hai observable. Observable1 lần lượt phát ra từ số nguyên từ 1 đến 5 và một Observable2 phát ra số nguyên từ 6 đến 10. Nếu chúng ta kết hợp chúng, Observable1 sẽ phát ra từ 1 đến 5 và Observable2 sẽ phát ra dữ liệu từ 6 đến 10 đồng thời. Toán tử concat () sẽ hợp nhất cả luồng dữ liệu và phát ra dữ liệu từ Observable1 và sau đó sẽ phát ra dữ liệu từ Observable2. Dưới đây là sơ đồ giải thích .
Tài liệu tham khảo