【发布时间】:2020-02-02 17:52:02
【问题描述】:
我正在构建聊天应用程序。我想每隔 x 秒获取一次新消息,如下所示: 1. 5秒 2. 10 秒 3. 20 秒 - 有新消息 4. 5秒 5. 10 秒 ...等等。
我厌倦了repeatWhen,但似乎没有重复请求,只发出完成的 observable 的最后一个值。
这是我得到的:
this.delay = 5000;
this.ngxsStore.fetchMessages()
.pipe(repeatWhen(completed => completed.pipe(delay(this.delay))})
.subscribe(resp => this.messages = resp);
fetchMessages(store) {
return this.api.fetchMesages()
.pipe(
tap(resp => {
if (resp) {
store.patchState({
messages: [
...store.getState().messages,
...resp
]
});
}
})
);
}
【问题讨论】:
-
repeatWhen重新订阅其源 Observable,因此它取决于this.api.fetchMessages()所做的事情。 -
事实上我不是在发送请求,而是在
ngxsstore 中触发操作。更新了代码