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隐藏标签和显示标签的实例
Nov 11 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
Jan 15 Javascript
DOM基础教程之使用DOM设置文本框
Jan 20 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
Mar 01 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
Mar 08 Javascript
Javascript中常用的检测方法小结
Oct 08 Javascript
javascript实现鼠标点击页面 移动DIV
Dec 02 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
Jan 23 Javascript
利用vueJs实现图片轮播实例代码
Jun 03 Javascript
JavaScript之面向对象_动力节点Java学院整理
Jun 29 Javascript
angularjs2中父子组件的数据传递的实例代码
Jul 05 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 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中关于普通表单多文件上传的处理方法
2011/03/25 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
jquery remove方法应用详解
2012/11/22 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
Python获取央视节目单的实现代码
2015/07/25 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
django 模版关闭转义方式
2020/05/14 Python
浅谈Python3中print函数的换行
2020/08/05 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
硕士研究生个人求职信
2013/12/04 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
建筑项目策划书
2014/01/13 职场文书
中学家长会邀请函
2014/02/03 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
2015年采购工作总结
2015/04/10 职场文书
班级班风口号大全
2015/12/25 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
python实现学员管理系统(面向对象版)
2022/06/05 Python