我想创建一个基于Observable的轮询器,该轮询器在上一个请求返回和下一个请求发出之间等待一定的时间。
这是我尝试的代码,但这设置了两次请求之间的延迟:
import {timer} from "rxjs";
this.timer = timer(1, POLLING_INTERVAL)
.pipe(concatMap(
(_) => getData()
)).subscribe((data) => {
// do something with data
});
答案 0 :(得分:1)
timer
对此并不理想。而是将repeatWhen
与delay
一起使用。
import { of } from 'rxjs';
import { repeatWhen, delay } from 'rxjs/operators';
getData().pipe(
repeatWhen(notifications => notifications.pipe(
delay(POLLING_INTERVAL),
)),
).subscribe(...);
答案 1 :(得分:0)
您必须将创建间隔用于: https://stackblitz.com/edit/typescript-ohddud?file=index.ts&devtoolsheight=100 或带有两个参数的计时器: https://stackblitz.com/edit/typescript-h9pzxr?file=index.ts&devtoolsheight=100
我希望您以正确的方式合并请求。