我是RxJS的初学者,只熟悉基础知识。情况是:我有一个可观察量,应该按需异步加载一些数据。另一个函数应该创建该需求,并要求第一个可观察量加载下一条数据。
这样:
dataPiece$:Observable<DataPiece> = http.load(this.url + this.pieceUrl)
loadNextPiece(pieceUrl)
{
this.pieceUrl = pieceUrl;
//make the observable to automatically load new piece of data
//once pieceUrl is updated
}
您可以使用主题创建包含 pieceUrl 的流。对于每个部分,请求都将发出,并且使用switchMap,您可以将所有响应合并到一个新的流中。
let urlPiece = new Subject();
let dataPiece$:Observable<DataPiece>;
loadNextPiece(pieceUrl)
{
urlPiece.next(pieceUrl);
}
dataPiece$ = urlPiece.asObservable()
.switchMap(urlPiece => http.load(this.url + pieceUrl))
.map((response) => {
// parse response or just return it
return response;
})
.catch(error => {
// handle error
});
let subscription = dataPiece$.subscribe( (response) => {
//do something with response
})