Javascript 加载带间隔的bar http请求

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

我试图在a)执行请求之前和b)接收请求之后(例如,显示/隐藏加载条)连接到流。不使用interval我可以在subscribe函数中将布尔值isLoaded设置为false,并将其设置为true

但是如何使用interval来实现这一点呢

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。该死,对不起……完全是空的。