一、队列是什么?

一个先进先出(First In Fist Out)的数据结构,简称 FIFO 结构。队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。在 JavaScript 中没有队列,但可以用 Array 实现队列的所有功能。
image.png

二、简易示例

示例源码

  1. const queue = [];
  2. queue.push(1);
  3. queue.push(2);
  4. const a = queue.shift(); // 输出1
  5. const b = queue.shift(); // 输出2

其中,变量 a 值为 1,b 值为 2。

三、什么场景下用队列?

需要考虑先进先出的场景都可以用队列,举例如下:

  • JS 异步中的任务队列

3.1 场景一:JS 异步中的任务队列

在 JS 中,引入了 Callback Queue 来处理异步任务。这是因为 JS 是单线程,它无法同时处理异步中的并发任务,所以必须要 Callback Queue 来先后处理异步任务。
image.png