RXJS-如何在一段时间后重复订阅

问题描述 投票:0回答:1

我想每15000毫秒重复一次相同的REST呼叫订阅(轮询)。我试过了:

foo() {
    return this.httpClient.get('/rest')
    .pipe(
      delay(15000),
      repeat(),
    );
}

//...
this.foo().subscribe(() => console.log('HEY'));

效果很好,除了它会在15000ms之后延迟第一次发射。因此,如何在不必等待第一个延迟的情况下获得相同的结果?

angular rxjs httpclient polling
1个回答
0
投票

您可以将要延迟的值存储在局部变量中,该局部变量被初始化为0,然后在第一次调用后进行更新。

foo() {
    let delayBy = 0;
    return this.httpClient.get('/rest')
    .pipe(
      delay(delayBy),
      tap(() => delayBy = 15000),
      repeat()
    );
}
© www.soinside.com 2019 - 2024. All rights reserved.