function repeat(operation, num) {
if (num <= 0) return
operation()
if (num % 10 === 0) {
setTimeout(function() {
repeat(operation, --num)
})
} else {
repeat(operation, --num)
}
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
简单地说就是:现在要做一件事情(即执行函数
operation),而且要重复执行很多很多次,次数用num表示。但是,假设这个操作比较耗时,而且次数很大,比如100000万次,那么就会造成其他任务阻塞。例如,页面无法响应用户。
怎么办呢?办法就是执行10次后歇一下,让其他任务有机会执行。然后再执行10次,再歇一下。如此反复,直到最后。
那么所谓的“歇一下”是怎么实现的呢?答案就是通过
setTimeout函数。这个函数的作用就是将指定的函数的延迟执行,或者说放到下一轮或将来的某一轮事件循环中,从而给其他代码的执行让出了机会。关于事件队列,可参考我专栏的一篇文章
//我来一句一个注释告诉你~手把手教学,你会喜欢的,没错,我就是来拿分的!!
if(num <= 0){
}else{
}
任务阻塞,事件队列,学到了。。