คำนำ
แกนกลางของ RXJs เป็นวัตถุที่สังเกตได้ซึ่งเป็นการรวมกันของการเขียนโปรแกรมแบบอะซิงโครนัสและเหตุการณ์โดยใช้ลำดับข้อมูลที่สังเกตได้
รูปแบบการเขียนโปรแกรมแบบอะซิงโครนัสที่คล้ายกับสิ่งนี้เป็นสัญญา สัญญาเป็นแบบอะซิงโครนัสตามการเปลี่ยนแปลงของรัฐ เมื่อรัฐรอเข้าสู่สถานะที่ประสบความสำเร็จหรือล้มเหลวก็ไม่สามารถแก้ไขได้อีก เมื่อสถานะเปลี่ยนแปลงผู้สมัครสมาชิกจะได้รับค่าเดียวเท่านั้น ในขณะที่สังเกตได้คือรูปแบบการเขียนโปรแกรมแบบอะซิงโครนัสตามลำดับ เมื่อการเปลี่ยนแปลงลำดับสมาชิกสามารถรับค่าใหม่ได้อย่างต่อเนื่อง นอกจากนี้สัญญามีเพียงกลไกการโทรกลับและไม่มีการดำเนินการเพิ่มเติมเพื่อรองรับการประมวลผลผลลัพธ์ที่ซับซ้อน Absoverable ให้ความหลากหลายของตัวดำเนินการเพื่อประมวลผลผลการดำเนินงานเพื่อให้ตรงกับตรรกะแอปพลิเคชันที่ซับซ้อน
ในการเขียนโปรแกรมจริงเราจัดการกับวัตถุสามอย่างเป็นหลัก: สังเกตได้ ผู้สังเกตการณ์ การสมัครสมาชิก :
ใช้เหตุการณ์คลิกขององค์ประกอบเป็นตัวอย่างเพื่อดูวิธีการใช้งานที่สังเกตได้:
var clickstream = new rx.observable (observer => {var handle = evt => observer.next (evt); element.addeventListener ('คลิก', handle); return () => element.removeEventListener ('คลิก', handle);}); evt.id);}, err => {console.error ('onerror');}, () => {console.log ('oncomplete');}); settimeout (() => {subscription.unsubscribe ();}, 1000); มันจะไม่ลำบากเกินไปหรือไม่ถ้าแต่ละเหตุการณ์ต้องถูกห่อหุ้มแบบนี้? ดังนั้น RXJS จึงให้ฟังก์ชั่นที่สะดวกแก่เรา: Observable.fromEvent เพื่ออำนวยความสะดวกในการเชื่อมต่อเหตุการณ์
ตัวดำเนินการเชื่อมโยงทั่วไป: concat, merge, combinelates ฯลฯ
การดำเนินการฉายภาพ: แผนที่, flatmap, flatmap จำเป็นต้องมีการแนะนำ
ตัวกรอง: ตัวกรอง, disliesultultchanges,
การจำแนกประเภทผู้ประกอบการ: ผู้ประกอบการตามหมวดหมู่
การจัดการข้อผิดพลาด: จับ, ลองใหม่ในที่สุด
การบีบอัด: debounce, เค้น, ตัวอย่าง, หยุดชั่วคราว
ลด: บัฟเฟอร์, บัฟเฟอร์ withcount, บัฟเฟอร์พร้อมเวลา
ในการควบคุมผู้ประกอบการที่สังเกตได้คุณต้องเรียนรู้ที่จะเข้าใจแผนภาพลำดับก่อน:
ลูกศรแสดงลำดับที่เปลี่ยนแปลงตลอดเวลา ตัวอย่างเช่นการคลิกเมาส์อย่างต่อเนื่องบนองค์ประกอบและวงกลมแสดงถึงผลกระทบของลำดับที่อยู่ด้านนอก ตัวอย่างเช่นการคลิกทุกองค์ประกอบจะทำให้เกิดการโทรกลับเหตุการณ์และตัวเลขในวงกลมจะถูกปล่อยออกมาจากภายนอก ตัวอย่างเช่นการทริกเกอร์เหตุการณ์แต่ละครั้งจะมีวัตถุเหตุการณ์ซึ่งแสดงถึงข้อมูลบางอย่างของการดำเนินการนี้
ในการใช้งานได้อย่างยืดหยุ่นเพื่อจัดการกับตรรกะที่ซับซ้อนคุณต้องเรียนรู้ที่จะใช้ตัวดำเนินการที่มีให้ ฉันแบ่งตัวดำเนินการออกเป็นสองประเภท: การดำเนินการตามลำดับเดียวและการดำเนินการตามลำดับคอมโพสิต การดำเนินการตามลำดับเดียวหมายถึงการดำเนินการดำเนินการในลำดับเดียว การดำเนินการตามลำดับแบบผสมหมายถึงผู้ประกอบการที่ประมวลผลลำดับสองลำดับขึ้นไป การดำเนินการตามลำดับแบบผสมค่อนข้างยากที่จะเข้าใจ
ก่อนอื่นให้ดูที่การดำเนินการลำดับเดียวโดยใช้การดำเนินการแผนที่เป็นตัวอย่าง:
การดำเนินการแผนที่คือการแปลงข้อมูลที่ส่งไปยังด้านนอกเป็นลำดับทุกครั้ง ดังที่แสดงในรูปด้านบน MAP ทวีคูณค่าการส่งของแต่ละครั้งด้วยสิบ จากนั้นเมื่อสมาชิกสมัครสมาชิกค่าการสมัครสมาชิกที่ได้รับในแต่ละครั้งจะไม่เป็นเดิม 123 แต่แปลง 10 20 30. ผ่านไดอะแกรมลำดับคุณสามารถเข้าใจการดำเนินงานของ Observable ได้ง่ายขึ้น
มารวมกันเป็นตัวอย่าง
วัตถุประสงค์ของการดำเนินการผสานคือการสังเคราะห์สองลำดับอิสระเป็นหนึ่งลำดับ ในขั้นต้นเมื่อเวลาผ่านไปลำดับที่ 1 จะส่ง A ที่ 100ms, B ที่ 200ms และ C ที่ 300ms สมาชิกของ บริษัท จะได้รับค่า ABC สามค่าที่ 400ms; ลำดับที่ 2 ส่ง D ที่ 150ms, E ที่ 250ms และ F ที่ 350ms และสมาชิกของ บริษัท จะได้รับสามค่าของ DEF ภายใน 400ms ลำดับใหม่หลังจากการผสานจะได้รับ ABCDEF ภายใน 400ms (บันทึกคำสั่งซื้อ)
ความเข้าใจของผู้ให้บริการทั่วไป:
Absoverable.Range: ส่งลำดับที่คุ้มค่าจำนวนหนึ่ง
สังเกตได้. toarray: แปลงค่าที่ปล่อยออกมาทั้งหมดเป็นอาร์เรย์เมื่อลำดับเสร็จสิ้น
สังเกตได้. flatmap: แปลงองค์ประกอบในสตรีมลำดับต้นฉบับเป็นสตรีมลำดับใหม่และรวมกระแสลำดับใหม่นี้เข้ากับตำแหน่งขององค์ประกอบในลำดับดั้งเดิม
สังเกตได้ startwith: มันตั้งค่าแรกของลำดับที่สังเกตได้
Observable.comBinelatest: คล้ายกับ PromiseAll มันจะถูกดำเนินการหลังจากลำดับทั้งหมดมีผลลัพธ์
สามารถสังเกตได้ SSCAN: ค่าที่ปล่อยออกมาในลำดับสามารถรวมได้ คล้ายกับการลดลงลดลงจะรวมค่าของลำดับทั้งหมดและส่งค่าสุดท้ายเมื่อลำดับเสร็จสิ้น
สังเกตได้ตัวอย่าง: รับตัวอย่างบางอย่างจากลำดับต่อเนื่อง
สังเกตได้ Merge: รวมหลายลำดับเป็นหนึ่งเดียวและสามารถใช้เป็นหรือ
สังเกตได้.
สังเกตได้. distinctuntilchanged (เปรียบเทียบ, ตัวเลือก): ตัวเลือกใช้คีย์ที่ใช้สำหรับการเปรียบเทียบและเปรียบเทียบเพื่อเปรียบเทียบสองปุ่ม
สามารถสังเกตได้การใช้งาน () หยุดส่งข้อมูลเมื่อพารามิเตอร์เป็นเท็จ
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร