实现一个简单的js队列

实现一个简单的js队列

    class Queue {
      constructor() {
        this.isPadding = false;
        this.queueList = [];
      }
      push(fn) {
        this.queueList.push(fn);
        this.run()
      }
      size() {
        return this.queueList.length;
      }

      run() {
        const vm = this;
        if (!this.size() || this.isPadding) { // 当前队列为空,或者当前有异步还未执行完成
          return
        }
        this.isPadding = true;
        const item = this.queueList.shift();
        item(function done() {
          vm.isPadding = false;
          vm.run()
        })
      }
    }

    const request = new Queue();
    request.push(function (done) {
      setTimeout(() => {
        console.log('异步1')
        done()
      }, 2000)
    })

    request.push(function (done) {
      setTimeout(() => {
        console.log('异步2')
        done()
      }, 2000)
    })
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 首先了解下队列的基本概念,队列属于一种在一端进行插入在另一端进行删除或者说获取元素的特殊形式的线性表,和栈刚好相反...
    牛空空阅读 1,346评论 0 1
  • OK,上篇博客我们介绍了双向链表以及代码实现,这篇文章我们来学习堆栈和队列。 队、栈和链表一样,在数据结构中非常基...
    绿萝呀阅读 2,823评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,240评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 5,882评论 4 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,617评论 0 11

友情链接更多精彩内容