SOURCE

function a() {
  console.log("a");
}
function b() {
  console.log("b");
}
function c() {
  console.log("c");
}
var fn = function (timer, cb=null) {
  return new Promise(resolve => {
    setTimeout(() => {
      cb && cb()
      resolve()
    }, timer)
  })
}
var step = function () {
  Promise.resolve().then(() => {
    return fn(5000, a)
  }).then(() => {
    return fn(3000, b)
  }).then(() => {
    return fn(6000)
  }).then(() => {
    return step()
  })
}

step();
console 命令行工具 X clear

                    
>
console