Node.js中的process.nextTick使用实例


Posted in Javascript onJune 25, 2015

我已经不记得是在哪里第一次看到process.nextTick这个玩意的调用了,哦,应该是在nodejs官方的process文档里看到的。当时就不理解这东西是干嘛的了,都已经有setTimeout了,还需要这个函数干嘛。而且从根本上来说,这个函数又是干嘛的?和setTimeout有什么区别?

stackoverflow上有一个非常好的帖子基本上解释了我的问题,这里我附上链接,然后给出它里面的范例:

stackoverflow.com >> What are the proper use cases for process.nextTick in Node.js?

var MyConstructor = function() {
 ...
 process.nextTick(function() {
  self._continue();
 });
};
 
MyConstructor.prototype.__proto__ = EventEmitter.prototype;
 
MyConstructor.prototype._continue = function() {
 // without the process.nextTick
 // these events would be emitted immediately
 // with no listeners. they would be lost.
 this.emit('data', 'hello');
 this.emit('data', 'world');
 this.emit('end');
};
 
function(req, res, next) {
 var c = new MyConstructor(...);
 c.on('data', function(data) {
  console.log(data);
 });
 c.on('end', next);
}

 

简单来说就是因为异步模型的关系,导致某些代码的执行可能先于它们所需要的条件完成之前,所以将这些需要先置条件的代码放入到一个回调函数中,然后放入到下一个事件循环的顶层。那么这些代码就不会被立刻执行了,而是在下一轮事件启动之前等待,启动后在进行执行。

Javascript 相关文章推荐
Jquery ui css framework
Jun 28 Javascript
控制文字内容的显示与隐藏示例
Jun 11 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
js实时获取并显示当前时间的方法
Jul 31 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
jquery实现下拉框左右选择功能
Feb 21 Javascript
认识less和webstrom的less配置方法
Aug 02 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
Jan 12 Javascript
vue 属性拦截实现双向绑定的实例代码
Oct 24 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
吃通javascript正则表达式
Apr 21 Javascript
Ajax中解析Json的两种方法对比分析
Jun 25 #Javascript
新手快速学习JavaScript免费教程资源汇总
Jun 25 #Javascript
JavaScript中字符串(string)转json的2种方法
Jun 25 #Javascript
深入理解JavaScript编程中的原型概念
Jun 25 #Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 #Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 #Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 #Javascript
You might like
php搜索文件程序分享
2015/10/30 PHP
Redis构建分布式锁
2017/03/28 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
这段js代码得节约你多少时间
2011/12/20 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python中作用域的深入讲解
2018/12/10 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
python飞机大战游戏实例讲解
2020/12/04 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
员工培训邀请函
2014/01/11 职场文书
个人优缺点自我评价
2014/01/27 职场文书
收银员岗位职责
2014/02/07 职场文书
单位租房协议书样本
2014/10/30 职场文书
岳麓书院导游词
2015/02/03 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
工作一年自我鉴定
2019/06/20 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
python保存图片的四个常用方法
2022/02/28 Python
Redis实现分布式锁的五种方法详解
2022/06/14 Redis
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL