使用js实现单链解决前端队列问题的方法
时间:2020-02-03来源:系统城作者:电脑系统城
使用场景
- 比如前端需要处理什么队列一类的业务
- 比如有人下单,需要弹出什么弹窗
首先先声明一个类
接收一个 数组对象: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())
-
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关信息
-
uniapp五分钟实现刷抖音小程序教程示例
最近闲来无事,在自己的小程序里面集成了一个小视频的接口,但是由于小程序对于播放视频的限制,只能用来做一个demo刷视频了,没办法上线体验。小程序播放视频限制最多10个,超出可能...
2023-03-18
-