聚合物this.async vs Promise.then vs setTimeout

时间:2017-12-07 12:12:58

标签: asynchronous polymer settimeout es6-promise event-loop

Polymers this.async,Promise.then和setTimeout函数之间的区别是什么?

我的理解:

this.async和Promise.then将Task移动到当前Stack的末尾,setTimeout作为new Task处理,并在eventloop从队列中获取新任务时在下一个循环中执行?

如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:3)

TLDR:是的,但如果指定了超时,请注意this.async uses setTimeout

  • Polymer.Async.runthis.async没有超时 - 排队任务(通过MutationObserver回调)
  • Polymer.Async.runthis.async超时 - 排队任务
  • Promise.then - 排队微任务
  • setTimeout - 排队macrotask

Difference between microtask and macrotask within an event loop context