RxJS - ตัวดำเนินการ
ตัวดำเนินการเป็นส่วนสำคัญของ RxJS ตัวดำเนินการเป็นฟังก์ชันบริสุทธิ์ที่รับการสังเกตได้เป็นอินพุตและเอาต์พุตก็เป็นสิ่งที่สังเกตได้เช่นกัน
การทำงานกับ Operators
ตัวดำเนินการเป็นฟังก์ชันบริสุทธิ์ที่สามารถสังเกตได้เป็นอินพุตและเอาต์พุตก็สามารถสังเกตได้เช่นกัน
ในการทำงานกับโอเปอเรเตอร์เราต้องใช้เมธอด pipe ()
ตัวอย่างการใช้ท่อ ()
let obs = of(1,2,3); // an observable
obs.pipe(
operator1(),
operator2(),
operator3(),
operator3(),
)
ในตัวอย่างข้างต้นเราได้สร้างสิ่งที่สังเกตได้โดยใช้ of()วิธีการที่ใช้ค่า 1, 2 และ 3 ในตอนนี้คุณสามารถดำเนินการที่แตกต่างกันโดยใช้ตัวดำเนินการจำนวนเท่าใดก็ได้โดยใช้เมธอด pipe () ดังที่แสดงด้านบน การดำเนินการของตัวดำเนินการจะดำเนินไปตามลำดับตามที่สังเกตได้
ด้านล่างนี้เป็นตัวอย่างการทำงาน -
import { of } from 'rxjs';
import { map, reduce, filter } from 'rxjs/operators';
let test1 = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
let case1 = test1.pipe(
filter(x => x % 2 === 0),
reduce((acc, one) => acc + one, 0)
)
case1.subscribe(x => console.log(x));
เอาต์พุต
30
ในตัวอย่างข้างต้นเราได้ใช้ตัวดำเนินการกรองที่กรองตัวเลขคู่และถัดไปเราใช้ reduce() ตัวดำเนินการที่จะเพิ่มค่าคู่และให้ผลลัพธ์เมื่อสมัครสมาชิก
นี่คือรายการของ Observables ที่เราจะพูดถึง
- Creation
- Mathematical
- Join
- Transformation
- Filtering
- Utility
- Conditional
- Multicasting
- การจัดการข้อผิดพลาด
ตัวดำเนินการสร้าง
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการสร้าง -
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | Ajax ตัวดำเนินการนี้จะทำการร้องขอ ajax สำหรับ URL ที่กำหนด |
2 | จาก ตัวดำเนินการนี้จะสร้างสิ่งที่สังเกตได้จากอาร์เรย์วัตถุที่มีลักษณะคล้ายอาร์เรย์สัญญาวัตถุที่ทำซ้ำได้หรือวัตถุที่มีลักษณะเหมือนที่สังเกตได้ |
3 | fromEvent ตัวดำเนินการนี้จะให้เอาต์พุตเป็นค่าที่สังเกตได้ซึ่งจะใช้กับองค์ประกอบที่ปล่อยเหตุการณ์ออกมาเช่นปุ่มการคลิกเป็นต้น |
4 | fromEventPattern ตัวดำเนินการนี้จะสร้างสิ่งที่สังเกตได้จากฟังก์ชันอินพุตที่ใช้ในการลงทะเบียนตัวจัดการเหตุการณ์ |
5 | ช่วงเวลา ตัวดำเนินการนี้จะสร้าง Observable ทุกครั้งตามเวลาที่กำหนด .. |
6 | ของ ตัวดำเนินการนี้จะรับอาร์กิวเมนต์ที่ส่งผ่านและแปลงเป็นข้อโต้แย้งที่สังเกตได้ |
7 | พิสัย ตัวดำเนินการนี้จะสร้าง Observable ซึ่งจะให้ลำดับของตัวเลขตามช่วงที่ระบุ |
8 | throwError ตัวดำเนินการนี้จะสร้างสิ่งที่สังเกตได้ซึ่งจะแจ้งข้อผิดพลาด |
9 | จับเวลา ตัวดำเนินการนี้จะสร้างค่าที่สังเกตได้ซึ่งจะปล่อยค่าออกมาหลังจากหมดเวลาและค่าจะเพิ่มขึ้นเรื่อย ๆ หลังจากการโทรแต่ละครั้ง |
10 | iif โอเปอเรเตอร์นี้จะตัดสินใจว่าจะสมัครใช้งาน Observable ตัวใด |
ตัวดำเนินการทางคณิตศาสตร์
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการทางคณิตศาสตร์ -
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | นับ ตัวดำเนินการ count () ใช้ค่าที่สังเกตได้และแปลงเป็นค่าที่สังเกตได้ซึ่งจะให้ค่าเดียว |
2 | สูงสุด วิธีการสูงสุดจะใช้ค่าที่สังเกตได้ทั้งหมดและส่งคืนค่าที่สังเกตได้ด้วยค่าสูงสุด |
3 | นาที Min method จะใช้ค่าที่สังเกตได้ทั้งหมดและส่งกลับค่าที่สังเกตได้ด้วยค่า min |
4 | ลด ในตัวดำเนินการลดฟังก์ชันตัวสะสมจะถูกใช้กับอินพุตที่สังเกตได้และฟังก์ชันตัวสะสมจะส่งคืนค่าสะสมในรูปแบบของค่าที่สังเกตได้โดยมีค่าเมล็ดพันธุ์ทางเลือกที่ส่งผ่านไปยังฟังก์ชันตัวสะสม ฟังก์ชันลด () จะรับ 2 อาร์กิวเมนต์หนึ่งฟังก์ชันตัวสะสมและค่าเมล็ดที่สอง |
เข้าร่วม Operators
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการเข้าร่วม
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | concat ตัวดำเนินการนี้จะปล่อย Observable ตามลำดับที่กำหนดให้เป็นอินพุตและดำเนินการต่อไป |
2 | ส้อมเข้าร่วม ตัวดำเนินการนี้จะถูกนำมาใช้ในอาร์เรย์หรือวัตถุ dict เป็นอินพุตและจะรอให้สิ่งที่สังเกตเห็นได้ดำเนินการจนเสร็จสมบูรณ์และส่งคืนค่าสุดท้ายที่ปล่อยออกมาจากค่าที่สังเกตได้ที่กำหนด |
3 | ผสาน ตัวดำเนินการนี้จะรับอินพุตที่สังเกตได้และจะปล่อยค่าทั้งหมดจากค่าที่สังเกตได้และปล่อยเอาต์พุตเดียวที่สังเกตได้ |
4 | แข่ง มันจะคืนค่าที่สังเกตได้ซึ่งจะเป็นสำเนามิเรอร์ของแหล่งแรกที่สังเกตได้ |
ตัวดำเนินการเปลี่ยนแปลง
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการการเปลี่ยนแปลง
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | กันชน บัฟเฟอร์ทำงานบนสิ่งที่สังเกตได้และใช้ในการโต้แย้งเป็นสิ่งที่สังเกตได้ มันจะเริ่มบัฟเฟอร์ค่าที่ปล่อยออกมาจากเดิมที่สังเกตได้ในอาร์เรย์และจะปล่อยออกมาเหมือนกันเมื่อสิ่งที่สังเกตได้ถูกนำมาเป็นอาร์กิวเมนต์จะเปล่งออกมา เมื่อสิ่งที่สังเกตได้ถูกนำมาใช้เป็นอาร์กิวเมนต์ปล่อยบัฟเฟอร์จะถูกรีเซ็ตและเริ่มบัฟเฟอร์อีกครั้งบนต้นฉบับจนกว่าอินพุตที่สังเกตได้จะปล่อยออกมาและสถานการณ์เดียวกันจะเกิดขึ้นซ้ำ |
2 | bufferCount ในกรณีของตัวดำเนินการ buffercount () จะรวบรวมค่าจากค่าที่สังเกตได้ซึ่งถูกเรียกใช้และปล่อยค่าเดียวกันเมื่อขนาดบัฟเฟอร์ที่กำหนดให้กับบัฟเฟอร์ที่ตรงกัน |
3 | bufferTime สิ่งนี้คล้ายกับ bufferCount ดังนั้นที่นี่จะรวบรวมค่าจากค่าที่สังเกตได้ซึ่งถูกเรียกใช้และปล่อย bufferTimeSpan เสร็จสิ้น มันต้องใช้เวลาใน 1 อาร์กิวเมนต์คือbufferTimeSpan |
4 | bufferToggle ในกรณีของ bufferToggle () ใช้ 2 อาร์กิวเมนต์ openings และ closedSelector อาร์กิวเมนต์เปิดสามารถสมัครใช้งานได้หรือสัญญาว่าจะเริ่มต้นบัฟเฟอร์และอาร์กิวเมนต์ที่สองปิดตัวเลือกสามารถสมัครใช้งานได้อีกครั้งหรือสัญญาว่าตัวบ่งชี้จะปิดบัฟเฟอร์และปล่อยค่าที่รวบรวม |
5 | บัฟเฟอร์เมื่อ ตัวดำเนินการนี้จะให้ค่าในรูปแบบอาร์เรย์โดยใช้อาร์กิวเมนต์เดียวเป็นฟังก์ชันที่จะตัดสินใจว่าเมื่อใดควรปิดปล่อยและรีเซ็ตบัฟเฟอร์ |
6 | ขยาย ตัวดำเนินการขยายรับฟังก์ชั่นเป็นอาร์กิวเมนต์ซึ่งถูกนำไปใช้กับซอร์สที่สังเกตได้แบบวนซ้ำและบนเอาต์พุตที่สังเกตได้ ค่าสุดท้ายเป็นค่าที่สังเกตได้ |
7 | groupBy ในตัวดำเนินการ groupBy เอาต์พุตจะถูกจัดกลุ่มตามเงื่อนไขเฉพาะและไอเท็มกลุ่มเหล่านี้จะถูกส่งออกเป็น GroupedObservable |
8 | แผนที่ ในกรณีของตัวดำเนินการแผนที่ฟังก์ชันโปรเจ็กต์จะถูกนำไปใช้กับแต่ละค่าบนแหล่งสัญญาณที่สังเกตได้และเอาต์พุตเดียวกันจะถูกปล่อยออกมาเป็น Observable |
9 | mapTo ค่าคงที่จะถูกกำหนดเป็นเอาต์พุตพร้อมกับ Observable ทุกครั้งที่แหล่งที่มาของ Observable ปล่อยค่าออกมา |
10 | mergeMap ในกรณีของตัวดำเนินการ mergeMap ฟังก์ชันของโปรเจ็กต์จะถูกนำไปใช้กับค่าต้นทางแต่ละค่าและผลลัพธ์ของมันจะถูกรวมเข้ากับเอาต์พุตที่สังเกตได้ |
11 | switchMap ในกรณีของตัวดำเนินการ switchMap ฟังก์ชันของโปรเจ็กต์จะถูกนำไปใช้กับค่าแหล่งที่มาแต่ละค่าและผลลัพธ์ของมันจะถูกรวมเข้ากับเอาต์พุตที่สังเกตได้และค่าที่ให้คือค่าที่สังเกตได้ล่าสุดที่คาดการณ์ไว้ |
12 | หน้าต่าง ต้องใช้ windowboundaries ของอาร์กิวเมนต์ซึ่งเป็นสิ่งที่สังเกตได้และให้ค่าที่สังเกตได้ที่ซ้อนกันกลับมาเมื่อใดก็ตามที่ windowboundaries ส่งเสียง |
ตัวดำเนินการกรอง
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการกรอง
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | ตีกลับ ค่าที่ปล่อยออกมาจากแหล่งที่มาสังเกตได้หลังจากนั้นสักครู่และการปล่อยจะถูกกำหนดโดยอินพุตอื่นที่กำหนดให้เป็นสังเกตได้หรือสัญญา |
2 | debounceTime จะปล่อยค่าจากแหล่งที่สามารถสังเกตได้หลังจากเวลาเสร็จสมบูรณ์เท่านั้น |
3 | ชัดเจน ตัวดำเนินการนี้จะให้ค่าทั้งหมดจากแหล่งที่สังเกตได้ซึ่งแตกต่างกันเมื่อเปรียบเทียบกับค่าก่อนหน้า |
4 | elementAt ตัวดำเนินการนี้จะให้ค่าเดียวจากแหล่งที่สามารถสังเกตได้ตามดัชนีที่กำหนด |
5 | กรอง ตัวดำเนินการนี้จะกรองค่าจากแหล่งที่สังเกตได้ตามฟังก์ชันเพรดิเคตที่กำหนด |
6 | อันดับแรก ตัวดำเนินการนี้จะให้ค่าแรกที่ปล่อยออกมาจากแหล่งที่สังเกตได้ |
7 | ล่าสุด ตัวดำเนินการนี้จะให้ค่าสุดท้ายที่ปล่อยออกมาจากแหล่งที่สังเกตได้ |
8 | เพิกเฉย ตัวดำเนินการนี้จะละเว้นค่าทั้งหมดจากแหล่งที่สังเกตได้และดำเนินการเฉพาะการเรียกเพื่อทำหน้าที่เรียกกลับให้สมบูรณ์หรือผิดพลาด |
9 | ตัวอย่าง ตัวดำเนินการนี้จะให้ค่าล่าสุดจากแหล่งที่สังเกตได้และผลลัพธ์จะขึ้นอยู่กับอาร์กิวเมนต์ที่ส่งไปให้มันเปล่งออกมา |
10 | ข้าม ตัวดำเนินการนี้จะให้ค่าที่สังเกตได้กลับมาซึ่งจะข้ามการเกิดครั้งแรกของรายการนับที่ใช้เป็นอินพุต |
11 | เค้น ตัวดำเนินการนี้จะแสดงผลและละเว้นค่าจากแหล่งที่สามารถสังเกตได้สำหรับเวลาที่กำหนดโดยฟังก์ชันอินพุตที่ใช้เป็นอาร์กิวเมนต์และกระบวนการเดียวกันจะถูกทำซ้ำ |
ตัวดำเนินการสาธารณูปโภค
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการยูทิลิตี้
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | แตะ ตัวดำเนินการนี้จะมีเอาต์พุตเช่นเดียวกับซอร์สที่สังเกตได้และสามารถใช้เพื่อบันทึกค่าไปยังผู้ใช้จากสิ่งที่สังเกตได้ ค่าหลักข้อผิดพลาดถ้ามีหรือถ้างานเสร็จสมบูรณ์ |
2 | ล่าช้า ตัวดำเนินการนี้จะหน่วงเวลาของค่าที่ปล่อยออกมาจากแหล่งสัญญาณที่สังเกตได้ตามระยะหมดเวลาที่กำหนด |
3 | ล่าช้าเมื่อ ตัวดำเนินการนี้จะชะลอค่าที่ปล่อยออกมาจากแหล่งสัญญาณที่สังเกตได้ตามการหมดเวลาจากค่าอื่นที่สังเกตได้ซึ่งนำมาเป็นอินพุต |
4 | สังเกต ตัวดำเนินการนี้ตามตัวกำหนดตารางเวลาการป้อนข้อมูลจะส่งการแจ้งเตือนจากแหล่งที่มาที่สังเกตได้อีกครั้ง |
5 | subscribeOn ตัวดำเนินการนี้ช่วยในการสมัครสมาชิกแบบอะซิงโครนัสกับแหล่งที่สังเกตได้ตามตัวกำหนดตารางเวลาที่ใช้เป็นอินพุต |
6 | timeInterval ตัวดำเนินการนี้จะส่งคืนอ็อบเจ็กต์ที่มีค่าปัจจุบันและเวลาที่ผ่านไประหว่างค่าปัจจุบันและค่าก่อนหน้าซึ่งคำนวณโดยใช้อินพุตตัวกำหนดตารางเวลา |
7 | การประทับเวลา ส่งคืนการประทับเวลาพร้อมกับค่าที่ปล่อยออกมาจากแหล่งที่สังเกตได้ซึ่งจะบอกเกี่ยวกับเวลาที่ปล่อยค่าออกมา |
8 | หมดเวลา ตัวดำเนินการนี้จะแสดงข้อผิดพลาดหากแหล่งที่มาของ Observable ไม่แสดงค่าหลังจากหมดเวลาที่กำหนด |
9 | toArray สะสมค่าแหล่งที่มาทั้งหมดจาก Observable และส่งออกเป็นอาร์เรย์เมื่อแหล่งที่มาเสร็จสมบูรณ์ |
ตัวดำเนินการตามเงื่อนไข
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการตามเงื่อนไข
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | defaultIfEmpty ตัวดำเนินการนี้จะส่งคืนค่าเริ่มต้นหากแหล่งที่สามารถสังเกตได้ว่างเปล่า |
2 | ทุก มันจะส่งคืนค่าที่สังเกตได้ตามฟังก์ชันอินพุตตรงตามเงื่อนไขของแต่ละค่าบนแหล่งที่สังเกตได้ |
3 | หา สิ่งนี้จะส่งคืนค่าที่สังเกตได้เมื่อค่าแรกของแหล่งที่สังเกตได้ตรงตามเงื่อนไขสำหรับฟังก์ชันเพรดิเคตที่นำมาเป็นอินพุต |
4 | findIndex ตัวดำเนินการนี้ตามตัวกำหนดตารางเวลาการป้อนข้อมูลจะส่งการแจ้งเตือนจากแหล่งที่มาที่สังเกตได้อีกครั้ง |
5 | มันว่างเปล่า ตัวดำเนินการนี้จะให้เอาต์พุตเป็นจริงหากอินพุตที่สังเกตได้ไปสำหรับการเรียกกลับที่สมบูรณ์โดยไม่ต้องเปล่งค่าใด ๆ และเป็นเท็จหากอินพุตที่สังเกตได้ปล่อยค่าใด ๆ |
ตัวดำเนินการมัลติคาสติ้ง
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในประเภทตัวดำเนินการหลายช่อง ..
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | มัลติคาสต์ ผู้ให้บริการมัลติคาสต์แชร์การสมัครสมาชิกเดียวที่สร้างขึ้นกับสมาชิกรายอื่น พารามิเตอร์ที่มัลติคาสต์ใช้เป็น subject หรือเมธอดจากโรงงานที่ส่งคืน ConnectableObservable ที่มีเมธอด connect () ในการสมัครสมาชิกต้องเรียกเมธอด connect () |
2 | เผยแพร่ ตัวดำเนินการนี้ให้ ConnectableObservable กลับมาและจำเป็นต้องใช้เมธอด connect () เพื่อสมัครรับข้อมูลที่สังเกตได้ |
3 | เผยแพร่พฤติกรรม เผยแพร่ Behaviour ใช้ประโยชน์จาก BehaviourSubject และส่งคืน ConnectableObservable ต้องใช้วิธีการเชื่อมต่อ () เพื่อสมัครสมาชิกกับสิ่งที่สังเกตได้ที่สร้างขึ้น |
4 | เผยแพร่ล่าสุด เผยแพร่ Behaviour ใช้ประโยชน์จาก AsyncSubject และส่งคืน ConnectableObservable ต้องใช้วิธีการเชื่อมต่อ () เพื่อสมัครสมาชิกกับสิ่งที่สังเกตได้ที่สร้างขึ้น |
5 | เผยแพร่เล่นซ้ำ เผยแพร่ Replay ใช้ประโยชน์จากหัวข้อพฤติกรรมซึ่งสามารถบัฟเฟอร์ค่าและเล่นซ้ำกับสมาชิกใหม่และส่งคืน ConnectableObservable ต้องใช้วิธีการเชื่อมต่อ () เพื่อสมัครสมาชิกกับสิ่งที่สังเกตได้ที่สร้างขึ้น |
6 | แบ่งปัน เป็นนามแฝงสำหรับตัวดำเนินการ mutlicast () ที่มีข้อแตกต่างเพียงอย่างเดียวคือคุณไม่ต้องเรียกวิธีการเชื่อมต่อ () ด้วยตนเองเพื่อเริ่มการสมัครสมาชิก |
ตัวดำเนินการจัดการข้อผิดพลาด
ต่อไปนี้เป็นตัวดำเนินการที่เราจะพูดถึงในหมวดตัวดำเนินการจัดการข้อผิดพลาด
ซีเนียร์ No | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | catchError ตัวดำเนินการนี้ดูแลการจับข้อผิดพลาดบนแหล่งที่สังเกตได้โดยส่งคืนค่าที่สังเกตได้ใหม่หรือข้อผิดพลาด |
2 | ลองอีกครั้ง ตัวดำเนินการนี้จะดูแลการลองอีกครั้งบนแหล่งสัญญาณที่สังเกตได้หากมีข้อผิดพลาดและการลองใหม่จะทำตามจำนวนอินพุตที่กำหนด |