RxJava - การเปลี่ยนแปลงตัวดำเนินการ
ต่อไปนี้เป็นตัวดำเนินการที่ใช้ในการแปลงรายการที่ปล่อยออกมาจาก Observable
ซีเนียร์ | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | Buffer รวบรวมไอเท็มจาก Observable เป็นกลุ่มเป็นระยะ ๆ แล้วปล่อยบันเดิลแทนที่จะเป็นไอเท็ม |
2 | FlatMap ใช้ในการสังเกตการณ์ที่ซ้อนกัน เปลี่ยนสิ่งของให้เป็น Observables จากนั้นแบนรายการให้เป็น Observable เดียว |
3 | GroupBy แบ่ง Observable ออกเป็นชุดของ Observables ที่จัดเรียงตามคีย์เพื่อเปล่งกลุ่มรายการต่างๆ |
4 | Map ใช้ฟังก์ชันกับไอเท็มที่ปล่อยออกมาเพื่อแปลงร่าง |
5 | Scan ใช้ฟังก์ชันกับแต่ละรายการที่ปล่อยออกมาตามลำดับจากนั้นจึงปล่อยค่าที่ต่อเนื่องกัน |
6 | Window รวบรวมรายการจาก Observable ลงในหน้าต่าง Observable เป็นระยะ ๆ จากนั้นจึงปล่อยหน้าต่างแทนที่จะเป็นรายการ |
ตัวอย่างการเปลี่ยนแปลงตัวดำเนินการ
สร้างโปรแกรม Java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกใน C: \> RxJava
ObservableTester.java
import io.reactivex.Observable;
//Using map operator to transform an Observable
public class ObservableTester {
public static void main(String[] args) {
String[] letters = {"a", "b", "c", "d", "e", "f", "g"};
final StringBuilder result = new StringBuilder();
Observable<String> observable = Observable.fromArray(letters);
observable
.map(String::toUpperCase)
.subscribe( letter -> result.append(letter));
System.out.println(result);
}
}
ตรวจสอบผลลัพธ์
รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้ -
C:\RxJava>javac ObservableTester.java
ตอนนี้เรียกใช้ ObservableTester ดังนี้ -
C:\RxJava>java ObservableTester
ควรให้ผลลัพธ์ดังต่อไปนี้ -
ABCDEFG