Introduction
Trong bài viết này, tui sẽ nói về 4 toán tử và cái chung nhất của 4 toán tử này là đều tạo ra các Observables(có thể quan sát).
- create()
- just()
- range()
- repeat()
Why you should Care About these Operators
- Đối với toán tử create() và just() nên được sử dụng nếu bạn muốn tạo ra 1 single Observable. Toán tử just() có khả năng chấp nhận một danh sách lên đến 10 mục. Tuy nhiên, tui không thấy điểm nào trong việc chuyển nó thành danh sách vì có những toán tử khác cũng chấp nhận danh sách và chúng không giới hạn ở 10 mục. Vì vậy, tui khuyên bạn cũng chỉ nên sử dụng nó để tạo ra 1 single observable.
- range() và repeat() rất tốt để thay thế các vòng lặp hoặc bất kỳ quy trình / phương thức lặp lại nào. Bạn có thể thực hiện công việc trên một luồng nền(background thread) và quan sát kết quả trên luồng chính(main thread).
create()
Input:T
Output:Observable<T>
Toán tử create() rõ ràng được sử dụng để tạo các Observables. Đây là cơ bản nhất nhưng cũng có thể là linh hoạt nhất. Nếu bạn muốn tạo một Toán tử có thể quan sát (Observable) và không có toán tử nào khác phù hợp với nhu cầu của bạn, hãy xem xét toán tử create().
Tui sẽ chỉ cho bạn hai cách khác nhau để tạo một Observable bằng toán tử Create ().
- Tạo một đối tượng có thể quan sát được(Observable) từ một đối tượng duy nhất(single object)
- Tạo một quan sát được(Observable) từ danh sách các đối tượng
Tạo một đối tượng có thể quan sát được từ một đối tượng duy nhất
- Gồm các bước mà theo cá nhân tui thường áp dụng:
- Khởi tạo đối tượng để trở thành có thể quan sát được(Observable).
- Tạo có thể quan sát(Observable).
- Đăng ký(Subscribe) đối tượng có thể quan sát và nhận(emitted) được đối tượng phát ra.
Code:
Output:
MainActivity: onNext: single task: Walk the dog
Tạo một quan sát được từ danh sách các đối tượng
- Tạo đối tượng có thể quan sát(Observable).
- Bên trong phương thức đăng ký, tui tạo 1 vòng lặp các danh sách tác vụ(task) và mỗi lần lặp thì gọi vào hàm onNext(task).
- Khi vòng lặp hoàn tất, thì tui gọi phương thức onComplete().
- Đăng ký(Subscribe) đối tượng có thể quan sát và nhận(emitted) được đối tượng phát ra.
Output:
MainActivity: onNext: task list: Take out the trash
MainActivity: onNext: task list: Walk the dog
MainActivity: onNext: task list: Make my bed
MainActivity: onNext: task list: Unload the dishwasher
MainActivity: onNext: task list: Make dinner
just()
Input: T... (Optional Array[10])
Output: Observable<T>
Trong ví dụ bên dưới, tui đang sử dụng toán tử "just()" và chuyển một tập dữ liệu gồm 10 chuỗi kiểu String.
NOTE: Bạn chỉ có thể chuyển tối đa 10 đối tượng cho toán tử just ().
Code:
Output:
onNext: first
onNext: second
onNext: third
onNext: fourth
onNext: fifth
onNext: sixth
onNext: seventh
onNext: eighth
onNext: ninth
onNext: tenth
✅ Hãy nhớ rằng ví dụ này không thực tế chút nào, nhưng nó vẫn có giá trị bởi vì tất cả các hoạt động sẽ tuân theo cùng một cấu trúc chung. Vì vậy, tui đang sử dụng nó để minh họa cấu trúc tổng thể của các toán tử.
range()
Input: [x, x+1, ..., x + y]
Output: Observable<Integer>
range() rất đơn giản và trực quan. Nó phát ra một loạt các đối tượng. Là đầu vào, bạn chuyển một giá trị nhỏ nhất và một giá trị tối đa. Nó sẽ phát ra tất cả các giá trị trong phạm vi (Bao gồm giá trị tối thiểu nhưng không bao gồm giá trị tối đa).
Code:
Output:
onNext: 0
onNext: 1
onNext: 2
onNext: 3
onNext: 4
onNext: 5
onNext: 6
onNext: 7
onNext: 8
onNext: 9
onNext: 10
repeat()
repeat() là toán tử giống như tên gọi của nó là để lặp đi lặp lặi theo số lần tuỳ chọn nhất định. Tuy nhiên, lặp lại phải được sử dụng kết hợp với một toán tử khác. Một ví dụ điển hình là với toán tử range().
Code:
Output:
onNext: 0
onNext: 1
onNext: 2
onNext: 0
onNext: 1
onNext: 2
إرسال تعليق
Cảm ơn bạn đã quan tâm và bày tỏ :D