【发布时间】:2021-08-06 15:43:14
【问题描述】:
我说 http 需要 10 秒才能完成(有时需要 1 秒才能完成)并且每 5 秒间隔运行一次。
我希望间隔停止并等到 http 完成然后继续。
这是重现问题:
refresh$ = interval(5 * 1000).pipe(tap(() => this.load()));
fakehttp() {
return timer(10 * 1000).pipe(take(1));
}
load() {
this.fakehttp().subscribe((r) => {
console.log("data");
});
}
ngOnInit() {
this.refresh$.subscribe((r) => {
console.log("refresh!");
});
}
【问题讨论】:
-
timer/interval是 RxJS 的东西吗? -
是的。这是重现问题。我有 http 需要 10 秒才能完成(有时需要 1 秒才能完成)并且每 5 秒间隔运行一次。我希望间隔停止并等到 http 完成然后继续。
-
好的,只是想确保我阅读了正确的文档。
-
我认为间隔是错误的方式。响应可能会触发一个新的请求,例如去抖动。
-
@jabaa 使用 RxJS 并没有那么难。同样的逻辑。更好的结果。我只需要阅读文档,因为我没有经常使用它。
标签: javascript angular rxjs