คำใบ้ RxJS [กรอง TakeWhile]

Jan 06 2023
คำแนะนำนี้ครอบคลุมความแตกต่างระหว่างตัวกรองและตัวดำเนินการ takeWhile จากไลบรารี RxJS ตามเอกสารอย่างเป็นทางการ: กรอง กรองรายการที่ปล่อยออกมาโดยแหล่งที่มา สังเกตได้ โดยปล่อยเฉพาะรายการที่ตรงตามภาคแสดงที่ระบุเท่านั้น

คำแนะนำนี้ครอบคลุมความแตกต่างระหว่างตัวกรองและ ตัวดำเนินการ takeWhileจากไลบรารี RxJS

ตามเอกสารอย่างเป็นทางการ:

กรอง

กรองรายการที่ปล่อยออกมาจากแหล่งที่มาที่สังเกตได้ โดยปล่อยเฉพาะรายการที่ตรงตามภาคแสดงที่ระบุเท่านั้น

ใช้เวลา

ปล่อยค่าที่ออกโดยแหล่งที่มาที่สังเกตได้ ตราบเท่าที่แต่ละค่าเป็นไปตามเพรดิเคตที่กำหนด จากนั้นทำให้เสร็จทันทีที่เพรดิเคตนี้ไม่เป็นไปตามเพรดิเคต

ดังนั้นตัวดำเนินการทั้งสองจึงใช้ฟังก์ชันเพรดิเคตเป็นอาร์กิวเมนต์แรกซึ่งเรียกใช้สำหรับแต่ละค่าที่ปล่อยออกมาจากสตรีมต้นทาง

อย่างไรก็ตาม Observable ที่ส่งคืนโดยตัวดำเนินการตัวกรองจะไม่ยกเลิกการสมัครจากสตรีมต้นทาง โปรดทราบว่าไม่สามารถใช้ตัวดำเนินการตัวกรองเพื่อยกเลิกการสมัครรับข้อมูลโดยปริยายจากแหล่งที่มาที่สังเกตได้เมื่อฟังก์ชันเพรดิเคตไม่เป็นที่พอใจ:

ในทางกลับกัน สตรีมที่ส่งคืนโดยโอเปอเรเตอร์ takeWhile จะยกเลิกการสมัครจากแหล่งที่มาที่สังเกตได้ และส่งการแจ้งเตือนที่สมบูรณ์เมื่อฟังก์ชันเพรดิเคตส่งคืนค่าเท็จ เป็นผลให้สามารถใช้โอเปอเรเตอร์ takeWhile เพื่อยกเลิกการสมัครรับสตรีมต้นทางโดยปริยายตามเงื่อนไขที่กำหนด:

ควรสังเกตว่าแหล่งที่มาที่สังเกตได้ไม่ได้ส่งการแจ้งเตือนที่สมบูรณ์ อย่างไรก็ตามฟังก์ชันการโทรกลับที่ส่งผ่านไปยังตัวดำเนินการขั้นสุดท้ายจะถูกเรียกใช้เมื่อสิ้นสุดการสตรีมไม่ว่าจะเป็นการสิ้นสุดหรือการยกเลิกการสมัครรับข้อมูล นอกจากนี้ คุณสามารถควบคุมได้ว่าค่าสุดท้ายที่ปล่อยออกมาจากสตรีมต้นทางจะถูกส่งผ่านไปยังเอาต์พุต Observable หรือไม่ (อาร์กิวเมนต์ที่สองของตัวดำเนินการ takeWhile ซึ่งเป็นค่าเท็จตามค่าเริ่มต้น)

ตัวอย่างสด:

หากคุณชอบคำใบ้ โปรดปรบมือให้ฉันหน่อย