我找到了解决问题的文档:
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方法可以处理异步代码,甚至可以停止间隔。如果你需要的话,请告诉我(给我留言(,我稍后会在我的答案中添加更多代码。