ฉันมีคำขอ API ที่ซ้อนกันและแยกคำขอเหล่านั้นเหมือนกับที่ฉันจะทำกับ Promises (.then) ด้วยตัวดำเนินการ flatMap วิธีนี้ใช้งานได้ดี แต่ฉันต้องตรวจสอบด้วยว่าคำตอบนั้นถูกต้องหรือไม่ และหากไม่ ฉันจะรอคำตอบที่ถูกต้อง ดังนั้นฉันจึงเพิ่มโอเปอเรเตอร์ JumpWhile
init(): Observable<any> {
return this.loadDataA();
}
loadDataA(): Observable<any> {
return this._serviceA.loadData()
.skipWhile((foo) => foo === undefined)
.flatMap((foo) => this.loadDataB(foo.importantProp));
}
loadDataB(important: string): Observable <any> {
return this._serviceB.loadData(important)
.skipWhile((bar) => bar === undefined)
.map((bar) => true);
}
ปัญหาคือว่าการข้ามครั้งแรกในฟังก์ชัน loadDataA ทำงานอย่างที่ควรจะเป็น แต่จะไม่เข้าสู่ flatMap หากไม่ได้กำหนดการตอบสนอง ตัวดำเนินการ skimpWhile ใน loadDataB ไม่ได้เข้าไปใน .map แต่จะส่งกลับไปยัง flatmap ของ loadDataA เพื่อไม่ให้ดำเนินการ .map ในฟังก์ชัน loadDataB ดังนั้นฉันจะดำเนินการข้ามขณะทำงานแบบซ้อนได้อย่างไร ขอบคุณ!