美文网首页
实现一个Queue类

实现一个Queue类

作者: meow_possion | 来源:发表于2019-07-11 14:48 被阅读0次

题目要求:实现一个Queue类,要求调用task可以实现定时任务。比如Queue().task(1, 1000)是一秒输出数字,Queue().task(2, 2000)两秒之后输出数字2,Queue().task(3, 3000)3秒之后输出3。当调用run()方法之后再开始执行输出。
思路:题意要求类中有两个方法,并且调用run之后才能执行,那么想到用promise或者async/await去实现这个功能。
先用promise实现

function Queue(){
  this.task = (num, time) => {
    return new Promise((resolve, reject) => {
       setTimeout(()=> {
        console.log(num)
        resolve(num);
        }, time);
    })
  };
  this.run = () => {

    //并行
    let first = this.task(1, 1000);
    let second= this.task(2, 2000);
    let third= this.task(3, 3000);
    Promise.all([first, second, third]).then((result) => {
       console.log(result);
    });
   //串行
   this.task(1, 1000).then((result) => {
       this.task(2, 2000).then((result) => {
         this.task(3, 3000);
      });
    });
  }
}
let queue = new Queue();
queue.run();

接下来用async/await关键字实现

function Queue(){
  this.task = (num, time) => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        console.log(num);  
        resolve(num);
      }, time);
    })
  };
  this.run = async () => {
    //串行
    let first = await this.task(1, 1000);
    let second = await this.task(2, 3000);
    let third = await this.task(3, 3000);
    console.log(first, second, third);
   //并行
    let task = [];
     for(let i = 1; i < 4; i ++){
        task.push(this.task(i, i * 1000));
      };
      Promise.all(task);
  };
}
let queue = new Queue();
queue.run();

相关文章

  • queue

    queue构造函数 queue queT;//queue采用模板类实现,queue对象的默认构造形式: queue...

  • 实现一个Queue类

    题目要求:实现一个Queue类,要求调用task可以实现定时任务。比如Queue().task(1, 1000)是...

  • Queue模块

    Queue类即是一个队列的同步实现。 队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize...

  • Java 优先队列 (PriorityQueue)

    基本概念 Priority queue是抽象集合类的一个子类,实现了Queue接口。一方面priority que...

  • 2018-07-27

    17.7.queue- 同步队列类源代码:Lib / queue.py 该queue模块实现了多生产者,多消费者队...

  • Queue

    JUC 集合包中 Queue 的实现类包括: ArrayBlockingQueue, LinkedBlocking...

  • 阻塞队列之ArrayBlockingQueue

    BlockingQueue 是一个接口,继承自Queue,已知实现类有以下几种: 一、ArrayBlockingQ...

  • Java集合-2

    队列 Queue 是模拟队列的类,FIFO先进先出; PriorityQueue是一个比较标准的队列实现类,它不符...

  • scrapy基于redis分布式爬虫实现

    Scrapy基于redis分布式爬虫的主要实现类 1:queue实现,这是scheduler调度得一个重点,所有的...

  • Java-0017-List Set Map-Ⅰ

    2016.7.28 Collection与List、Set、Queue各种接口和实现类的关系 Map各种接口和实现...

网友评论

      本文标题:实现一个Queue类

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