百木园-与人分享,
就是让自己快乐。

JavaScript运行机制(Node版)

Node与浏览器的 Event Loop 差异

浏览器环境下,microtask的任务队列是每个macrotask执行完之后执行。

而在Node.js中,microtask会在事件循环的各个阶段之间执行,也就是一个阶段执行完毕,就会去执行microtask队列的任务。
 
+1 process.nextTick(function () {
console.log(\'nextTick执行1\');
});
 
+2 process.nextTick(function () {
console.log(\'nextTick执行2\');
});
 
+3 setImmediate(function () {
console.log(\'setImmediateჽ执行1\');
 
+4 process.nextTick(function () {
console.log(\'强势插入\');
});
});
 
+5 setImmediate(function () {
console.log(\'setImmediateჽ执行2\');
});
 
+6 console.log(\'正常执行\');
 
正常执行
nextTick执行1
nextTick执行2
setImmediate执行1
强势插入
setImmediateჽ执行2
在node上

 

macrotask: javascript 代码,所有同步代码执行。输出:正常执行。注册 +3 +5 到 Macrotask。执行process.nextTick(),最终输出:正常执行, nextTick执行1, nextTick执行2。
**microtask: 无

macrotask: 执行 +3 +5。 输出:setImmediate执行1, setImmediateჽ执行2。 执行process.nextTick(),最终输出:setImmediate执行1, setImmediateჽ执行2,强势插入。
microtask: 无

所以最终输出为:正常执行, nextTick执行1, nextTick执行2,setImmediate执行1, setImmediateჽ执行2,强势插入。
 

node.js 是⼀个 JS 的服务端运⾏环境,简单的来说,是在 JS 语⾔规范的基础上,封装了⼀些服务端的运⾏时 对象,让我们能够简单实现⾮常多的业务功能。> 基于 JS 语法增加与操作系统之间的交互。


来源:https://www.cnblogs.com/webld/p/15960482.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » JavaScript运行机制(Node版)

相关推荐

  • 暂无文章