[js] 使用js实现一个循环队列
const queue = []
let queueRunning = false
let loopTimer = null
const loop = task => {
// do something...
console.log(task)
if (isQueueHasTask()) {
// you can add new tasks in the middle of the queue.
loopTimer = setTimeout(() => {loop(getNextTask())})
} else {
queueRunning = false
}
}
const startLoop = () => {
if (queueRunning) return
if (isQueueHasTask()) {
queueRunning = true
loop(getNextTask())
}
}
const stopLoop = () => {
if (!queueRunning) return
if (loopTimer) {
clearTimeout(loopTimer)
queueRunning = false
}
}
const getNextTask = () => queue.shift()
const isQueueHasTask = () => !!queue.length
const addTask = task => {
if (!Array.isArray(task)) task = [task]
queue.push(...task)
startLoop()
}
个人简介
我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论
浙公网安备 33010602011771号