2. 队列

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 引擎执行;(按照队列的执行顺序)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容