资讯专栏INFORMATION COLUMN

JS数据结构0x003:队列

xuhong / 2047人阅读

0x000 概述

这篇文章说的是队列,队列的用处也贼大,削峰、限流、消息异步化等等等

0x001 什么是队列

队列就是先入先出的数组,就和平常银行排队一样,先排队的人先处理事务,如图


只有两个操作:

入队:将数据放入队列

出队:将数据取出并处理

0x002 初始化

js中的队列依旧可以使用数组实现

function init() {
    return []
}
0x003 入队

入队要将数据放到数组的最后,js可以用push

function enQueue(queue, data) {
    queue.push(data)
}
0x004 出队

出队要拿出第一个数据,js可以用shift

function deQueue(queue) {
    queue.shift()
}
0x005 使用
function main() {
    let queue = init()
    enQueue(queue, 1)
    enQueue(queue, 2)
    enQueue(queue, 3)
    deQueue(queue)
    deQueue(queue)
    deQueue(queue)
}
0x006 日常使用

依旧不会这么使用

let queue=[]
queue.push(1)
queue.push(2)
queue.push(3)
queue.shift()
queue.shift()
queue.shift()
queue.shift()
0x007 栗子:快速生成、缓慢

生产者每秒生成两条消息,但是消费者只消费一条消息。

效果

源代码

const message = []
let index = 0
setInterval(() => {
    message.push(++index)
}, 500)

setInterval(() => {
    console.log(message.shift())
}, 1000)
0x008 资源

源代码:https://github.com/followWinter/data-structure

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98971.html

相关文章

  • React入门0x003jsx 和自由的组件

    摘要:概述说起来,我喜欢的还是他的思想,在中,实际上没有的区别,全部都是,就和一样,可以将所有的资源等同视之。但是这时候又出来说,我要把写在中,真是烦透咯不过,这种东西不过是年一轮回,就和时尚一样。 0x000 概述 说起来react,我喜欢的还是他的思想,在react中,实际上没有html、css、js的区别,全部都是js,就和webpack一样,可以将所有的资源等同视之。但是这在一开始,...

    eechen 评论0 收藏0
  • JS数据结构0x004:链表

    摘要:概述这篇文章是说链表,链表这种数据结构非常普遍,有时候我们根本就没有意识到用的是链表啥是链表链表就是用绳子连起来的酒瓶子,酒就是数据,每个酒瓶子都连着下一个酒瓶子。 0x000 概述 这篇文章是说链表,链表这种数据结构非常普遍,有时候我们根本就没有意识到用的是链表 0x001 啥是链表 链表就是用绳子连起来的酒瓶子,酒就是数据,每个酒瓶子都连着下一个酒瓶子。 showImg(https...

    sumory 评论0 收藏0
  • es6基础0x003:默认参数

    摘要:语法使用使用翻译一下传值检测从翻译的结果可以看出,默认参数只检查两种情况不传参数传入前参后用前面的参数可以作为后面参数的默认值,甚至可以对前面的参数做一些特别的操作,比如简单的加减乘除默认参数调用函数赋值默认参数甚至可以调用函数,可以调用函 0x000 语法 function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defa...

    james 评论0 收藏0
  • java笔记0x003:控制执行流程

    0x001 if-else boolean isSuccess = true; if (isSuccess) { System.out.println(success); } if (isSuccess) { System.out.println(success); }...

    callmewhy 评论0 收藏0
  • Redux入门0x101: 简介及`redux`简单实现

    摘要:在我看来它们的关系不会比共用开头更深了,所以我就重新开了一个头,但其实是基于前面写的资源中文文档英文文档官方视频学习历程当初为了学习,看了许多的材料,中途曾经放弃两次,但是最后还是勇敢的拿起了它,现在终于勉强弄懂。 0x000 概述 这一章开始讲redux,其实是承接前面的react,但其实作为一个框架来说,redux和react并没有太多的关系,本身是独立存在的。在我看来它们的关系不...

    ssshooter 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<