javascript - RxJs: การเรียกใช้งาน observables 3 ตัวต่อเนื่องกันและใช้ผลลัพธ์จากตัวแรกในตัวที่สอง และตัวแรกและตัวที่สองในคำขอที่สาม
ฉันจำเป็นต้องสามารถเรียกใช้ observables 3 ตัวต่อเนื่องกันเพื่อที่ฉันจะสามารถใช้ค่าผลลัพธ์จากตัวแรกในตัวที่สอง และใช้ผลลัพธ์ของตัวแรกและตัวที่สองในตัวที่สามได้
บางอย่างเช่นนี้ (มันไม่ทำงานเพราะ serviceId ไม่ปรากฏในการร้องขอครั้งที่สาม):
private setupStuff(): void {
this.initRouteParams().pipe(
switchMap(serviceId => this.getFileInfo(serviceId)),
switchMap(fileName => this.getExistingFile(serviceId, fileName)
.subscribe(response => {
console.log(response);
}))
);
}
คำตอบ #1
คุณสามารถส่งค่าของ serviceN กลับไปยัง serviceN+1 อย่างชัดเจน นี่คือแนวคิด:
private setupStuff() {
this.initRouteParams()
.pipe(
switchMap(serviceId => {
return zip(of(serviceId), this.getFileInfo(serviceId))
}),
switchMap(([serviceId, filename]) => {
return zip(of(serviceId), of(filename), this.getExistingFile(serviceId, filename))
})
)
.subscribe(([serviceId, filename, response]) => {
console.log(serviceId, filename, response);
})
}
แก้ไข :
คุณสามารถแก้ไขข้อผิดพลาดของชนิดข้อมูลโดยการประกาศชนิดของแต่ละอินพุตอย่างชัดเจน คุณน่าจะต้องกำหนดชนิดที่เหมาะสมให้กับ response
