我想创建一个可观察的处理这些问题的方法:
request
我现在的职责是:
getData (): Observable<CurrentData> {
return interval(5000)
.pipe(
flatMap(() => "HTTP REQUEST",
),
map(this.extractData, this))
}但是我的函数没有等待成功的响应,我的函数每5秒试一次请求。
发布于 2019-09-26 13:34:06
可以使用exhaustMap运算符,它将忽略,直到最后一个操作符完成为止。
getData (): Observable<CurrentData> {
return interval(5000)
.pipe(
exhaustMap(() => "HTTP REQUEST",
),
map(this.extractData, this))
}发布于 2019-09-26 11:30:44
用户repeat和timer操作符,或repeatWhen
getData (): Observable<CurrentData> {
return httpRequest().pipe(map(.....),timer(5000),repeat())
}
getData (): Observable<CurrentData> {
return httpRequest().pipe(map(.....),repeatWhen(()=>timer(5000)))
}发布于 2019-09-26 11:27:59
您可以尝试以下方法。首先创建一个BehaviorSubject并在您的服务中观察到
private mySubject: BehaviorSubject<any> = new BehaviorSubject<>(null);
myObservable$: Observable<any> = this.mySubject.asObservable();然后创建函数,该函数一旦进入无限循环就会被触发。
loop() {
var that = this;
this.http.get(myUrl, { headers }).subscribe(
(data: any) => {
this.mySubject.next(data);
setTimeout(function () {
that.timeout();
}, 5000);
} https://stackoverflow.com/questions/58115656
复制相似问题