调用循环的Javascript递归函数



在我的js程序中,我有一个循环,必须继续检查变量x是否为true。如果不是,我希望它在再次检查之前等待2秒钟。我正在通过递归函数来解决这个问题,但我不知道这种方法是否有效。这是我的代码,请告诉我这个方法是否好,或者是否有更好的方法来实现我想要实现的目标。谢谢

function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
function loop() {
if(x == true) {
} else {
sleep(2000).then(() => {
loop();
});
}
}
loop();

使用setTimeout(function, ms)可以更有效地执行此操作。这里有一个例子:

x = false;
function loop() {
if (x == true) {

} else {
setTimeout(loop, 2000);
console.log("looped");
}
}
loop();

我想要:

function Looper(loopFunc){
let interval; 
this.passed = 0;
this.loop = milliseconds=>{
this.passed = 0;
interval = setInterval(()=>{
this.passed += milliseconds; loopFunc.call(this);
}, milliseconds);
return this;
}
this.stop = (milliseconds = 0)=>{
setTimeout(()=>{
clearInterval(interval); interval = undefined; 
}, milliseconds);
return this;
}
}
const looper = new Looper(function(){
console.log('milliseconds passed: '+this.passed);
});
looper.loop(500).stop(5250); // notice it's not exact

相关内容

  • 没有找到相关文章

最新更新