Saya memiliki permintaan api bertingkat dan saya membaginya seperti saya melakukannya dengan Promises (.then) dengan operator flatMap. Jadi ini berfungsi dengan baik tetapi saya juga harus memeriksa apakah responsnya valid dan jika tidak, saya akan menunggu respons yang benar, jadi saya menambahkan operator skipWhile.
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);
}
Masalahnya adalah skipWhile pertama dalam fungsi loadDataA berfungsi sebagaimana mestinya, tidak masuk ke flatMap jika responsnya tidak ditentukan. Operator skipWhile di loadDataB tidak masuk ke .map tetapi kembali ke flatmap loadDataA sehingga tidak pernah mengeksekusi .map di fungsi loadDataB. Jadi bagaimana saya bisa melakukan perilaku skipWhile yang bersarang? Terima kasih!