【发布时间】:2017-12-13 05:42:49
【问题描述】:
我在相关应用程序中使用以下库:Angular 4.x、ngrx 4.x、rxjs 5.4.x
我有一个需要每 5 分钟轮询一次的 api。用户还可以手动刷新数据。该数据存储在 ngrx 存储中。我正在使用 ngrx 效果,因此通过调度“FETCH”类型的操作来检索数据。
我想设置一个 rxjs 流,它将“FETCH”操作分派到 ngrx 存储。这将是一个 5 分钟的滑动计时器,当用户手动更新商店时会重置。订阅时,流最初应该发出一个值。
我不确定如何重置计时器。在普通的 javascript 中,我会执行以下操作:
console.clear();
let timer;
let counter = 0;
function fetch() {
console.log('fetch', counter++);
poll();
}
function poll() {
if (timer != null) {
window.clearTimeout(timer);
}
timer = window.setTimeout(() => {
console.log('poll');
fetch();
}, 5000);
}
function manualGet() {
console.log('manual');
fetch();
}
fetch();
<button onClick="manualGet()">Get Data</button>
问题:当另一个流再次像示例一样发射时,如何在重置的间隔上发射?
【问题讨论】:
标签: rxjs