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 相关文章推荐
javascript编程起步(第一课)
Jan 10 Javascript
Span元素的width属性无效果原因及解决方案
Jan 15 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
Jul 17 Javascript
js怎么终止程序return不行换jfslk
May 30 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
Jan 22 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
js实现刷新iframe的方法汇总
Apr 27 Javascript
高性能JavaScript 重排与重绘(2)
Aug 11 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
layui动态绑定事件的方法
Sep 20 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
Python安装第三方库的3种方法
2015/06/21 Python
python实现基本进制转换的方法
2015/07/11 Python
python编程实现归并排序
2017/04/14 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
python 多进程队列数据处理详解
2019/12/23 Python
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
销售顾问的岗位职责
2013/11/13 职场文书
党员创先争优承诺书
2014/03/26 职场文书
出国留学担保书
2014/05/20 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
代办社保委托书范文
2014/10/06 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
2014年督导工作总结
2014/11/19 职场文书
督导岗位职责
2015/02/04 职场文书
2014年个人年终总结
2015/03/09 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript