1. 队列简介(先进先出)
- 队列是一个先进先出的数据结构;
-
JS 中没有队列,但是可以用 Array 实现栈中的所有的功能;
image.png
const queue = [];
queue.push(1); // 入队
queue.shift(1); // 出队
2. 队列使用场景

image.png

image.png

image.png

image.png

image.png

image.png
var RecentCounter = function() {
this.q = [];
}
RecentCounter.prototype.ping = function(t) {
this.q.push(t);
// 将不在范围内的数据出栈
while(this.q[0] < t - 3000) {
this.q.shift();
}
return this.q.length;
}
时间复杂度O(n)和空间复杂度O(n)
3. js 异步中的任务队列

image.png
执行过程: 一段js代码刚执行会有一个匿名的主事件丢到 Callback Queue 中,然后 js 引擎会去任务队列取一个事件去执行,在执行这个事件的过程中,如果里面有异步任务,他就丢给 WebAPIs去执行,自己继续去执行后面的代码,WebAPIs执行完之后,会将回调函数的js代码重新丢回 Callback Queue 中,等待 js 引擎执行;(按照队列的执行顺序)
