我认为实现这一目标的更好方法是
setInterval
. 保留一个计数器,该计数器随对的每次调用而递增
setInterval()
如果计数器达到极限,请用清除间隔
clearInterval
. 如果符合其他条件,则将计数器重置为零:
let nums = [1, 2, 3, 12, 4, 1, 2, 4, 6, 3]
let i = 0
function getValue(fn){
fn(nums[i % nums.length])
i++
}
const MAX_ITERATIONS = 10
let iteration = 0
let int = setInterval(() => {
getValue((value) => {
if(value > 10) iteration = 0; // Reset the counter
else iteration++
})
console.log("loop iteration: ", iteration)
if (iteration >= MAX_ITERATIONS) clearInterval(int)
}, 1000)
MAX_ITERATIONS
它将在第二次获得大于10的值之前到达循环的末尾并停止:
let nums = [1, 2, 3, 12, 4, 1, 2, 4, 6, 3]
let i = 0
function getValue(fn){
fn(nums[i % nums.length])
i++
}
const MAX_ITERATIONS = 4
let iteration = 0
let int = setInterval(() => {
getValue((value) => {
if(value > 10) iteration = 0; // Reset the counter
else iteration++
})
console.log("loop iteration: ", iteration)
if (iteration >= MAX_ITERATIONS) clearInterval(int)
}, 1000)