我正在尝试使用rxjs和angular 7提供一个简单的轮询服务,并且遇到了一个反复出现的问题,即我的请求实际上只被触发了一次,但间隔成功完成且没有错误。
我的服务组件如下:
import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';
import { interval, Subject } from 'rxjs/index';
import { exhaustMap } from 'rxjs/internal/operators';
constructor( private httpClient: HttpClient ) {
}
getPing() {
const req = new HttpRequest('GET', this.getUrl, {responseType: 'blob', headers: new HttpHeaders(), reportProgress: true});
interval(1000)
.pipe(take(4))
.pipe(exhaustMap(()=> this.httpClient.request(req)))
.subscribe(data => console.log(data));
}
我有控制台日志显示间隔发生并在4个间隔后完成,但是根据网络选项卡仅调用第一个请求。
如果我使用fetch而不是http client或将间隔更改为循环,则该服务的行为将与预期的一样,但是我宁愿不使用这些方法。有人知道我在想什么吗?
我正在使用angular 7.0.0和rxjs 6.2.2 Console logs Network Tab