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 相关文章推荐
用于节点操作的API,颠覆原生操作HTML DOM节点的API
Dec 11 Javascript
对xmlHttp对象方法和属性的理解
Jan 17 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
JavaScript实现弹出广告功能
Mar 30 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
关于vue-router的那些事儿
May 23 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
原生JS实现多条件筛选
Aug 19 Javascript
JavaScript WeakMap使用详解
Feb 05 Javascript
二维码条形码生成的JavaScript脚本库
Jul 07 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中将数组存到文件里的实现代码
2012/01/19 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
Stop SQL Server
2007/06/21 Javascript
Javascript hasOwnProperty 方法 & in 关键字
2008/11/26 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
js打造数组转json函数
2015/01/14 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
简单谈谈python中的lambda表达式
2018/01/19 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
汇科协同Java笔试题
2012/03/31 面试题
竞选部门副经理的自荐书范文
2014/02/11 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
vue基于Teleport实现Modal组件
2021/05/31 Vue.js