[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) returnif (isQueueHasTask()) {queueRunning = trueloop(getNextTask())}
}
const stopLoop = () => {if (!queueRunning) returnif (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()
}
个人简介
我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论
主目录
与歌谣一起通关前端面试题