Javascript 加载带间隔的bar http请求
我试图在a)执行请求之前和b)接收请求之后(例如,显示/隐藏加载条)连接到流。不使用interval我可以在subscribe函数中将布尔值isLoaded设置为false,并将其设置为true 但是如何使用interval来实现这一点呢Javascript 加载带间隔的bar http请求,javascript,angular,rxjs,Javascript,Angular,Rxjs,我试图在a)执行请求之前和b)接收请求之后(例如,显示/隐藏加载条)连接到流。不使用interval我可以在subscribe函数中将布尔值isLoaded设置为false,并将其设置为true 但是如何使用interval来实现这一点呢 Observable.interval(5000). timeout(3500, new Error('Server not available.')). flatMap(() => this._http.get('htt
Observable.interval(5000).
timeout(3500, new Error('Server not available.')).
flatMap(() => this._http.get('http://api.dev/get/events')).
map(res => (<Response>res).json())
.subscribe(data => this.events = data,
error => console.debug('ERROR', error),
() => console.log('END')
);
可观测间隔(5000)。
超时(3500,新错误('服务器不可用'))。
flatMap(()=>this.\u http.get('http://api.dev/get/events')).
映射(res=>(res.json())
.subscribe(数据=>this.events=数据,
error=>console.debug('error',error),
()=>console.log('END')
);
我必须在我自己的observable中包装angulars http.get方法吗?或者有更好的/更具角度的方法吗?我建议不要使用interval,因为网络请求可能会延迟,所需时间会比interval长/短,而interval会/可能会使其不一致。但要做到这一点的方法是
// the import needed is
import { interval } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
private intervalSub: Subscription;
private ngUnsubscribe = new Subject();
somefunction (){
// Interval_Time was 5000
this.intervalSub = interval(Interval_Time)
.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
// call your api and do the request every Interval time
}
}
// make sure you have
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
您需要NgunsSubscribe主题的原因是,如果您离开组件,那么它将无法继续轮询。您是否看过的实现?是的,我看过。但那是angular1,我用的是angular2。该死,对不起……完全是空的。