队列是操作受限的线性结构。
- 可以在头部和尾部进行操作,但尾部只能插入,头部只能删除。
- 这种受限的操作方式让队列元素的插入和删除遵循一种特殊的原则——先进先出原则(First In First Out,FIFO)。
JavaScript 在处理异步操作时经常会用到队列,例如:
- 宏任务队列、微任务队列;
- 回调函数队列。
队列的实现也可以通过数组来实现,下面的代码实现了一个队列结构:
function Queue(){
var _queue = [];
// 尾部入队列
this.enqueue = function(element){
_queue.push(element)
}
// 头部出队列
this.dequeue = function() {
return _queue.shift()
}
// 队列头
this.front = function() {
return _queue[0]
}
// 队列尾
this.back = function() {
return _queue[_queue.length - 1]
}
// 清空队列
this.clear = function() {
_queue = []
}
// 判空
this.isEmpty = function() {
return _queue.length === 0
}
// 队列长度
this.size = function() {
return _queue.length
}
}
参考:《前端高手进阶》