คุณพูดถูกเอกสารขาดวิธีการเหล่านั้น อย่างไรก็ตามเมื่อฉันขุดลงในที่เก็บ rxjs ฉันพบความคิดเห็นที่ดีเกี่ยวกับการแตะ (ยาวเกินไปที่จะวางที่นี่) และตัวดำเนินการท่อ :
/**
* Used to stitch together functional operators into a chain.
* @method pipe
* @return {Observable} the Observable result of all of the operators having
* been called in the order they were passed in.
*
* @example
*
* import { map, filter, scan } from 'rxjs/operators';
*
* Rx.Observable.interval(1000)
* .pipe(
* filter(x => x % 2 === 0),
* map(x => x + x),
* scan((acc, x) => acc + x)
* )
* .subscribe(x => console.log(x))
*/
โดยสรุป:
ท่อ : ใช้เพื่อต่อตัวดำเนินการที่ใช้งานได้เข้าด้วยกันเป็นโซ่ ก่อนหน้านี้เราสามารถทำได้observable.filter().map().scan()
แต่เนื่องจากตัวดำเนินการ RxJS ทุกตัวเป็นฟังก์ชันแบบสแตนด์อโลนแทนที่จะเป็นวิธีการของ Observable เราจึงต้องpipe()
สร้างห่วงโซ่ของตัวดำเนินการเหล่านั้น (ดูตัวอย่างด้านบน)
แตะ : สามารถแสดงผลข้างเคียงกับข้อมูลที่สังเกตได้ แต่ไม่แก้ไขสตรีม แต่อย่างใด เดิมเรียกว่าdo()
. คุณสามารถคิดว่ามันเป็นอาร์เรย์ที่สังเกตได้เมื่อเวลาผ่านไปจากนั้นtap()
จะเทียบเท่ากับArray.forEach()
.