使用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())
-
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。
相關信息