node.js中的process.nextTick()和setImmediate()
2015-07-23 15:41
896 查看
process.nextTick()和setImmediate()在node.js中都是将回调函数延时执行。跟setTimeout(function(){}, 0);类似,但性能不一样,setTimeout定时器是采用红黑树,process.nextTick()是用数组,setImmediate()是用链表。
先看看process.nextTick()的代码
setImmediate()的代码为:
结果为:
两个结果一样,我们可以试试有什么不同,
结果为:
改变两个函数顺序结果还是一样。
所以nextTick()的回调函数执行的优先级要高于setImmediate();
process.nextTick()属于idle观察者,setImmediate()属于check观察者.在每一轮循环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者.
process.nextTick()在每轮循环中会将数组中的回调函数全部执行完.
而setImmediate()在每轮循环中执行链表中的一个回调函数.
先看看process.nextTick()的代码
process.nextTick(function(){ console.log("延迟执行"); }); console.log("正常执行");结果为:
setImmediate()的代码为:
setImmediate(function(){ console.log("延迟执行"); }); console.log("正常执行");
结果为:
两个结果一样,我们可以试试有什么不同,
process.nextTick(function(){ console.log("nextTick延迟") }); setImmediate(function(){ console.log("setImmediate延迟"); }); console.log("正常执行");
结果为:
改变两个函数顺序结果还是一样。
所以nextTick()的回调函数执行的优先级要高于setImmediate();
process.nextTick()属于idle观察者,setImmediate()属于check观察者.在每一轮循环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者.
process.nextTick()在每轮循环中会将数组中的回调函数全部执行完.
而setImmediate()在每轮循环中执行链表中的一个回调函数.
相关文章推荐
- 使用 HTTP 上传 G 级的文件之 Node.js 版本
- 异步流程控制:7 行代码学会 co 模块
- 批处理 延时不完全总结
- 批处理bat 延时执行命令的两种方法
- node.js中的fs.mkdir方法使用说明
- 为什么Node.js会这么火呢?Node.js流行的原因
- 究竟什么是Node.js?Node.js有什么好处?
- node.js中的http.response.removeHeader方法使用说明
- 浅析Node.js查找字符串功能
- Node.js中require的工作原理浅析
- 运行Node.js的IIS扩展iisnode安装配置笔记
- 使用npm发布Node.JS程序包教程
- node.js中的fs.symlinkSync方法使用说明
- Node.js中的流(Stream)介绍
- 使用node.js 获取客户端信息代码分享
- Windows8下搭建Node.js开发环境教程
- Node.js实现的简易网页抓取功能示例
- Node.js中HTTP模块与事件模块详解
- Node.js中child_process实现多进程
- Node.js中的process.nextTick使用实例