Aks*_*aik 5 javascript event-loop settimeout node.js promise
我在问题的两个不同部分考虑整个 JS 环境。
JavaScript 引擎(V8、SpiderMonkey)是单线程的,在 ES6 之前,在 ES6 引入 Promise 概念之前,没有在 JavaScript 中运行异步代码的机制。
我了解在 promises 出现之前,浏览器或 Node API(服务器端 JS)用于提供异步运行代码的机制,setTimeout and Process.nextTick并且由于 Promises 原生支持在 Javascript 中运行异步代码,我试图了解 promise 回调和 setTimeout 是如何实现的计划先运行一个。
这是否意味着存在两个事件循环并且它们相互协调?首先在浏览器/节点 API 中运行代码setTimeout and Process.nextTick,另一个在 JS 引擎中运行承诺回调,如果没有,那么它们是如何调度的,因为setTimeout and Process.nextTickJS 引擎中不存在定义,但 JS 引擎中必须存在 Promise 定义,因为 Promise 是 ES6标准。
我还想了解任务队列、作业队列、mircotasks 在哪里存在和管理,在 JS 引擎内部或外部引擎(在浏览器或 Node API 中)。
主要有两个js运行引擎:
\n\n在浏览器(谷歌浏览器)中:
\n\n\n\n宏任务:
\n\n微任务:
\n\n执行顺序\xef\xbc\x9a
\n\nPromise> Promise.then> setTimeout\n在nodejs运行时:
\n\n\n\n微任务:
\n\n宏观任务:
\n\n执行顺序\xef\xbc\x9a
\n\npromise> process.nextTick> promise.then > setImmediate> setTimeout\n很多关于事件循环的文章。给你一些参考资料来帮助你了解理论\xef\xbc\x9a
\n\n\n| 归档时间: | 
 | 
| 查看次数: | 1203 次 | 
| 最近记录: |