使用js实现单链解决前端队列问题的方法


Posted in Javascript onFebruary 03, 2020

使用场景

  • 比如前端需要处理什么队列一类的业务
  • 比如有人下单,需要弹出什么弹窗

首先先声明一个类

接收一个 数组对象:items

class ChainQueue {
 constructor(items) {
  this.items = items || []
  this.maxNum = 200
 }
}

为队列添加数组队列

// 添加数组队列
entryArrQueue(node) {
 Array.isArray(node)
 node.map(item => this.items.push(item))
}

为当前队列添加单个对象

// 添加队列
entryQueue(node) {
 if (this.items.length > this.maxNum) {
  return
 }
 if (Array.isArray(node)) {
  node.map(item => this.items.push(item))
 } else {
  this.items.push(node)
 }
}

删除队列,返回删除的当前的项目

deleteQueue(func = () => {}) {
 assert(isFunc(func), `${func} is not function`)
 func(this.items.shift())
}

返回队列的第一个

front() {
 return this.items[0]
}

清除队列

clear() {
 this.items = []
}

所有代码

const isFunc = v => typeof v === 'function'
const assert = (condition, msg) => {
 if (!condition) throw new Error(`[dashboard]${msg}`)
}
class ChainQueue {
 constructor(items) {
  this.items = items || []
  this.maxNum = 200
 }

 // 添加数组队列
 entryArrQueue(node) {
  Array.isArray(node)
  node.map(item => this.items.push(item))
 }

 // 添加队列
 entryQueue(node) {
  if (this.items.length > this.maxNum) {
   return
  }
  if (Array.isArray(node)) {
   node.map(item => this.items.push(item))
  } else {
   this.items.push(node)
  }
 }

 // 删除队列,返回删除的当前的项目
 deleteQueue(func = () => {}) {
  assert(isFunc(func), `${func} is not function`)
  func(this.items.shift())
 }

 // 返回队列的第一个
 front() {
  return this.items[0]
 }

 // 清除队列
 clear() {
  this.items = []
 }
 get size() {
  return this.items.length
 }

 get isEmpty() {
  return !this.items.length
 }

 print() {
  console.log(this.items.toString())
  console.log(this.items)
 }
 result() {
  return this.items
 }
}

module.exports = ChainQueue

// export default ChainQueue
// export default (ChainQueue = new ChainQueue())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js滚动条回到顶部的代码
Dec 06 Javascript
css配合jquery美化 select
Nov 29 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
Feb 20 Javascript
js字符串操作总结(必看篇)
Nov 22 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 Javascript
深入理解Promise.all
Aug 08 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
Sep 21 Javascript
JavaScript Reflect Metadata实现详解
Dec 12 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 12 Javascript
微信小程序自定义联系人弹窗
May 26 Javascript
javascript进阶篇深拷贝实现的四种方式
Jul 07 Javascript
javscript 数组扁平化的实现
Feb 03 #Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 #Javascript
JavaScript中的类型检查
Feb 03 #Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 #Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 #Javascript
24个解决实际问题的ES6代码片段(小结)
Feb 02 #Javascript
浅谈vuex为什么不建议在action中修改state
Feb 02 #Javascript
You might like
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP制作用户注册系统
2015/10/23 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
材料会计岗位职责
2014/03/06 职场文书
党员政治学习材料
2014/05/14 职场文书
洗手间标语
2014/06/23 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
小学庆六一主持词
2015/06/30 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
python批量创建变量并赋值操作
2021/06/03 Python