asynchronous - polymer this.async vs Promise.then vs setTimeout

标签 asynchronous polymer settimeout es6-promise event-loop

Polymers this.async、Promise.then 和 setTimeout 函数有什么区别?

我的理解:

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

如有错误请指正

最佳答案

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


  • Polymer.Async.run (this.async) 没有超时 - 排队一个任务(通过MutationObserver 回调)
  • Polymer.Async.run (this.async) 超时 - 排队任务<
  • Promise.then - 将微任务排入队列
  • setTimeout - 将宏任务排入队列

Difference between microtask and macrotask within an event loop context

关于asynchronous - polymer this.async vs Promise.then vs setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47694896/

相关文章:

c# - List<T>.ForEach() 使用 Async 有什么意义吗?

go - 无法使用 GOLANG 和 POLYMER 在服务器上保存上传的文件 http : no such file

javascript - setInterval() 添加类然后删除类相同的时间

javascript - 为什么这个延迟的 WHILE 循环会导致大量内存泄漏?

Javascript 如何在运行下一行代码之前等待 x 秒?

javascript - 尽管使用了 Async 模块,为什么这些函数仍然异步执行

web-services - JAXWS 异步调用如何与轮询配合使用

c# - SqlClient.SqlCommand.ExecuteScalarAsync 表现得像同步调用

web - 如何在 polymer 2 中的重复 dom 中添加插槽

javascript - 8Tracks API 自定义元素与 Polymer 不起作用