代码之家  ›  专栏  ›  技术社区  ›  Sphinx

设置超时时间晚于承诺时间

  •  0
  • Sphinx  · 技术社区  · 7 年前

    跑步 ,你会看到 设置超时 回拨。有 任何机制

    setTimeout(function() {
      console.log(1)
    }, 0)
    
    new Promise(function (resolve, reject) {
      resolve(2)
    }).then(console.log)
    
    setTimeout(function() {
      console.log(3)
    }, 0)
    
    new Promise(function (resolve, reject) {
      resolve(4)
    }).then(console.log)
    
    console.log('rush...')
    2 回复  |  直到 7 年前
        1
  •  3
  •   Nicholas Tower    7 年前

    原生承诺被安排为一个微任务。当前执行堆栈完成后,先运行微任务,然后执行常规任务。

    https://www.youtube.com/watch?v=cCOL7MC4Pl0 . 关于微任务的部分在中的24分钟开始。

        2
  •  0
  •   Simone Tallevi-Diotallevi    7 年前

    这很正常,因为 Javascript是单线程的