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

个人简介

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

主目录

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

[js] 使用js实现一个循环队列相关推荐

  1. 考研数据结构之队列(3.3)——练习题之设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空来设计队列的结构和相关基本运算算法(C表示)

    题目 设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空,约定当tag为0时队空,当tag为1时队不空,这样就可以用front==rear作为队满 ...

  2. 如何设计一个循环队列

    文章目录 前言 一.思路 二.代码实现 1.MyCircularQueue(k) 构造方法 2.Front 从队首获取元素 3.Rear 获取队尾元素 4.enQueue(value) 向循环队列插入 ...

  3. 力扣-设计一个循环队列

    设计应该支持以下操作: MyCircularQueue(k): 构造器,设置队列长度为 k . Front: 从队首获取元素.如果队列为空,返回 -1 . Rear: 获取队尾元素.如果队列为空,返回 ...

  4. 用数组来实现一个循环队列

    1. 初始化 数组 头尾节点 2. 插入 3. 判满 需要预留一个位置,用于判断队列是否满了 如上图发现(rear+1)%maxSize == front;不再插入 4. 删除 如上直接移动front ...

  5. 为什么循环队列要浪费一个存储空间

    为什么循环队列要浪费一个存储空间 什么是队列 队空和队满 队列的实现 数组实现队列 链表实现队列 假溢出问题 循环队列 队空和队满 实现循环队列 队列实战 两个栈实现队列 总结 什么是队列 队列和数组 ...

  6. 第3关:单链表循环队列

    #ifndef queue__h #define queue__h#include <iostream>struct Node // 数据节点 {int data; // 数据类型Node ...

  7. Java 循环队列原理与用法详解

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:iphone 也是办公神器,用了就知道了,不行送你一个试试个人原创+1博客:点击前往,查看更多 链接:https ...

  8. 用VB实现循环队列算法收藏

    在日常代码编制时,许多人会忽略一些最基本的算法,导致代码冗余,思路不清楚.我曾经至少两次在CSDN里遇到这类问题:我想在页面的右边显示一个列表,列表长度为20,新加入一个用户后,显示在列表开头,再加入 ...

  9. 数据结构(严蔚敏)之五——循环队列(c语言实现)

    在这里我先强调几点概念: 1.在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置. 2.在单队列中我们判断队列是否为空的条件是:Q.front==Q.rear;而在循环队列 ...

最新文章

  1. 图解|深入理解跳表及其在Redis中的应用
  2. Write-Ahead Transaction Log
  3. python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...
  4. Nginx Web服务应用
  5. Python 位操作运算符
  6. 用Vim编程——配置与技巧
  7. nuc8 黑苹果_萝莉的身材野兽的心——NUC8 MacOS黑苹果-Win10双系统体验
  8. CentOS安装mariadb做为mysql的替代品
  9. 业界分享 | 百度图神经网络实践
  10. Alipay Direct Bankpay 支付宝网银支付 (For OpenCart 2.x)
  11. c语言人事管理系统,c语言人事管理系统
  12. Linux:Vim的安装与配置
  13. 使用正则表达式,取得点击次数,函数抽离
  14. input只能输入数字和小数点_Python 3 学习笔记:数字和布尔
  15. 深入浅出通信原理(一)
  16. 绩效打c被开除,员工将新东方告上法院,获赔416000元!
  17. Ubuntu系统直接拷贝硬盘克隆
  18. JavaScript框架的四个时代
  19. 【网易笔试】小易最近在数学课上学习到了集合的概念
  20. django1.8下的markdown、highlight、pagedown解决

热门文章

  1. 2017年Spring发布了30个新的Android库,值得您关注
  2. docker内程序如何读取dockerfile和compose.yml中设置的环境变量
  3. JAVA基础实例(三)--排序
  4. Win7启动修复MBR(Win7+Linux删除Linux后进入grub rescue的情况)
  5. button的图文设置
  6. 使用Jquery提交Json格式的数据到Asp.net程序的另类做法
  7. 用python玩转数据慕课答案第四周_大学慕课用Python玩转数据章节测试答案
  8. 使用html记笔记,开始学习HTML,并记下笔记
  9. java.util.set cannot be assigned from null_Java中有关Null的9件事
  10. html label修改字体颜色,Swift label文字显示不同颜色(字体)