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 ลองอีกครั้ง

ตัวดำเนินการนี้จะดูแลการลองอีกครั้งบนแหล่งสัญญาณที่สังเกตได้หากมีข้อผิดพลาดและการลองใหม่จะทำตามจำนวนอินพุตที่กำหนด