美文网首页
记一个延时执行队列的实现

记一个延时执行队列的实现

作者: 隐号骑士 | 来源:发表于2021-05-31 12:23 被阅读0次
    class Quene {
      constructor(ms) {
        this.quene = [];
        this.interval = ms;
        this.timer = null;
      }
    
      enquene(cb) {
        this.quene.push(cb);
        this.consume();
      }
    
      consumeItem() {
        const cb = this.quene.shift();
        cb();
        if (!this.quene.length) {
          clearInterval(this.timer);
          this.timer = null;
        }
      }
    
      consume() {
        if (!this.timer) {
          this.timer = setInterval(this.consumeItem.bind(this), this.interval);
        }
      }
    }
    
    const q = new Quene(1000);
    
    q.enquene(() => {
      console.log(new Date(), 1);
    });
    q.enquene(() => {
      console.log(new Date(), 2);
    });
    q.enquene(() => {
      console.log(new Date(), 3);
    });
    

    相关文章

      网友评论

          本文标题:记一个延时执行队列的实现

          本文链接:https://www.haomeiwen.com/subject/erxbsltx.html