Saya memiliki aplikasi Angular 6. Saya memutakhirkan rxjs ke 6.
Di versi aplikasi sebelumnya saya harus melakukan panggilan seperti ini...
Saya memanggil observasi Lakukan sesuatu dengan hasilnya Kemudian panggil observasi lain menggunakan nilai dari yang terakhir Lakukan sesuatu dengan hasilnya
Lakukan ini menggunakan concatmap. Kodenya terlihat seperti ini...
this.service1.getData().concatMap(d1 => {
this.d1Local = d1;
return this.service2.getData(d1);
}).subscribe(
this.d2Local = d2,
error => errorFunction);
Saya mencoba menulis ulang ini menggunakan rxjs6 dan kata kunci pipa dan tanpa concatmap.
Saat ini saya punya...
this._LocationService.getLocation()
.pipe(
map(location => {
console.log(1);
this.location = location;
return this._GeoCoderService.getAddress(location)
.pipe
(map(address => {
this.address = "You are near " + address;
this.showSpinner = false;
}
))
}
)
);
Saya tidak pernah melihat '1' masuk ke konsol. Adakah ide bagaimana saya harus melakukan ini?
MEMPERBARUI:
Saya tahu memiliki kode di bawah ini. Saya pikir itu hampir benar, namun saya tidak melihat belasungkawa terakhir.log cetakan 1....
this._LocationService.getLocation()
.pipe(map((location: ILocation) => {
this.location = location;
return this._GeoCoderService.getAddress(location);
})
, catchError(error => { this.showSpinner = false; return throwError('Something went wrong!') })
).subscribe(
tap((address: string) => { console.log(1) })
);
Apa yang saya lewatkan?
this._GeoCoderService.getAddress
mengembalikan Observable, Anda perlu menggunakanconcatMap
(ataumergeMap
dalam kasus ini). Anda juga harus berlangganan di akhir rantai. - person martin   schedule 11.07.2018.tap()
di dalamsubscribe()
? - person CozyAzure   schedule 12.07.2018tap
disubscribe
- cukupsubscribe((address: string) => console.log(1));
- person dsych   schedule 12.07.2018