我想每15000毫秒重复一次相同的REST呼叫订阅(轮询)。我试过了:
foo() {
return this.httpClient.get('/rest')
.pipe(
delay(15000),
repeat(),
);
}
//...
this.foo().subscribe(() => console.log('HEY'));
效果很好,除了它会在15000ms之后延迟第一次发射。因此,如何在不必等待第一个延迟的情况下获得相同的结果?
您可以将要延迟的值存储在局部变量中,该局部变量被初始化为0,然后在第一次调用后进行更新。
foo() {
let delayBy = 0;
return this.httpClient.get('/rest')
.pipe(
delay(delayBy),
tap(() => delayBy = 15000),
repeat()
);
}