[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()
}

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题