gpt4 book ai didi

javascript - 完成后 n 秒重复请求(Angular2 - http.get)

转载 作者:可可西里 更新时间:2023-11-01 02:22:42 25 4
gpt4 key购买 nike

我玩了一下 angular2,过了一会儿就卡住了。

使用 http.get 可以很好地处理单个请求,但我想每 4 秒轮询一次实时数据,经过一段时间的修补并阅读了很多我最终得到的 reactx 内容:

Observable.timer(0,4000)
.flatMap(
() => this._http.get(this._url)
.share()
.map(this.extractData)
.catch(this.handleError)
)
.share();

http.get-observable 发出请求结果后,是否有一种简单方法来启动(4 秒)间隔? (或者我最终会陷入observable-hell?)

我想要的时间表:

Time(s): 0 - - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - 5 - - - - - 6
Action: Request - - Response - - - - - - - - - - - - - - - - - - - -Request-...
Wait: | wait for 4 seconds -------------------------> |

最佳答案

更新到 RxJS 6

import { timer } from 'rxjs';
import { concatMap, map, expand, catchError } from 'rxjs/operators';

pollData$ = this._http.get(this._url)
.pipe(
map(this.extractData),
catchError(this.handleError)
);

pollData$.pipe(
expand(_ => timer(4000).pipe(concatMap(_ => pollData$)))
).subscribe();

我正在使用 RxJS 5,但我不确定 RxJS 4 的等效运算符是什么。无论如何,这是我的 RxJS 5 解决方案,希望对您有所帮助:

var pollData = this._http.get(this._url)
.map(this.extractData)
.catch(this.handleError);
pollData.expand(
() => Observable.timer(4000).concatMap(() => pollData)
).subscribe();

expand 运算符将发出数据并在每次发射时递归地启动一个新的 Observable

关于javascript - 完成后 n 秒重复请求(Angular2 - http.get),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com