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实现图文切换效果另加特效
Jan 20 Javascript
jquery实现预览提交的表单代码分享
May 21 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
Mar 09 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
JS简单实现数组去重的方法分析
Oct 14 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
Sep 28 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 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 array_merge下进行数组合并的代码
2008/07/22 PHP
PHP安全配置详细说明
2011/09/26 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
python实现flappy bird小游戏
2018/12/24 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
Python matplotlib实时画图案例
2020/04/23 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
单位人事专员介绍信
2014/01/11 职场文书
感恩教育月活动总结
2014/07/07 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android