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 相关文章推荐
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
Apr 15 Javascript
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
js如何获取兄弟、父类等节点
Jan 06 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
Feb 28 Javascript
js图片处理示例代码
May 12 Javascript
javascript随机之洗牌算法深入分析
Jun 07 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
JS实现的简单下拉框联动功能示例
May 11 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 Javascript
防止Layui form表单重复提交的实现方法
Sep 10 Javascript
iSlider手机端图片滑动切换插件使用详解
Dec 24 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
thinkphp浏览历史功能实现方法
2014/10/29 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
美国在线家装零售商:Build.com
2016/09/02 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
公司司机岗位职责
2014/02/07 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
创业计划书之校园超市
2019/09/12 职场文书