SOURCE

// new Queue().task(1000, ()=>{
//   console.log(1);
// }).task(2000, ()=>{
//   console.log(2);
// }).task(3000, ()=>{
//   console.log(3);
// }).start();

// function Queue() {
//   let list = [];
//   let curTime = 0;
//   this.task= function(t, fn) {
//     let data = {};
//     curTime += t;
//     data['t'] = curTime;
//     data['fn'] = fn;
//     list.unshift(data);
//     return this;
//   }
//   this.start= function() {
//     for (let i=0; i<list.length; i++) {
//       (function(i){
//         setTimeout(()=>{
//           list[i]['fn']();
//         }, list[i]['t'])
//       })(i)
//     }
//   }
// }

function Queue(res) {
  return new Promise((resolve)=>{
    setTimeout(()=>{
      resolve(res+1);
    }, 1000);
  })
}

function Task(res, time) {
  return new Promise((resolve)=>{
    setTimeout(()=>{
      console.log(res);
      resolve(res);
    }, time);
  })
}

Queue(1).then((res)=>{
  return Task(2, 1000);
}).then((res)=>{
  return Task(3, 3000);
}).then((res)=>{
  return Task(4, 5000);
})

console 命令行工具 X clear

                    
>
console