我的屏幕左侧列表有不同的链接,右侧显示每个链接的详细信息。我正在使用以下服务来获取详细信息。
getDetails(id: string) : Observable<any>{
const url = `${environment.server}/api/details/${id}`
return Observable.of(1)
.debounceTime(2000)
.switchMap(() => this.http.get(url))
.map(r => r.json())
}
Observable.of(1)
1
没有意义的好方法吗?有不同的方法吗?http
?答案 0 :(得分:0)
你最终的目标是什么?关于
1)我会这样做:this.http.get(url).map(res => res.json())
,
2)好吧,取决于你的实现,但一般来说我只会设置一个布尔标志来避免多个请求,如下所示:
return new Observable(done => {
if (!this.myQueryIsRunning) {
this.myQueryIsRunning = true;
this.http.get(url).map(res => res.json()).subscribe(myData=> {
this.myQueryIsRunning = false;
done.next(data);
done.complete();
})
} else {
done.complete(); // or throw an error like done.error('my error');
}
3)不确定你的意思。你总是会遇到这样的错误:
this.http.get(url).map(res => res.json()).subscribe(myData=> {
this.myQueryIsRunning = false;
done.next(data);
done.complete();
}, hereIsAnError => {
// do something about it
})