RxJs为长时间运行的任务设置超时,防止在完成前一个任务之前出现新的间隔



我找到了解决问题的文档:

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval#ensure_that_execution_duration_is_shorter_than_interval_frequency

(function loop(){
setTimeout(function() {
// Your logic here
loop();
}, delay);
})();

但是如何在RxJs的帮助下重写这个逻辑呢?

做到这一点的最佳方法实际上取决于什么"CCD_ 1";正在做。

忠实地阅读上面的循环可能看起来是这样的:

const loop = new Subject();
loop.pipe(
delay(1000) // delay 1 second
).subscribe(
// Your logic here
loop.next();
);
loop.next(); // Initiate the loop

这很少是最好的解决方案,因为可观测性具有很大的能力和支持,可以管理一些非常复杂的数据流。

最简单的方法可能是这个:

const { interval } = require("rxjs");
const delay = 1000; // 1s
interval(delay).subscribe(() => {
// Your logic here
});

然而,它不会等待任何异步任务在订阅回调内完成,它将永远运行。但是are方法可以处理异步代码,甚至可以停止间隔。如果你需要的话,请告诉我(给我留言(,我稍后会在我的答案中添加更多代码。

最新更新