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 API学Jquery之一 选择器
Apr 07 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
使用apply方法实现javascript中的对象继承
Dec 16 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
JS实现CheckBox复选框全选全不选功能
May 06 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
javascript实现的闭包简单实例
Jul 17 Javascript
jQuery解决浏览器兼容性问题案例分析
Apr 15 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
基于axios封装fetch方法及调用实例
Feb 05 Javascript
jQuery实现雪花飘落效果
Aug 02 jQuery
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
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独立Session数据库存储操作类分享
2014/06/11 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
python实现2048小游戏
2015/03/30 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
python 动态加载的实现方法
2017/12/22 Python
Python清空文件并替换内容的实例
2018/10/22 Python
python文件拆分与重组实例
2018/12/10 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
python语言中有算法吗
2020/06/16 Python
深入了解Python enumerate和zip
2020/07/16 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
英国绿色商店:Natural Collection
2019/05/03 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
小学教师师德演讲稿
2014/05/06 职场文书
园林技术专业求职信
2014/07/28 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
大学生支教感言
2015/08/01 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
Python闭包的定义和使用方法
2022/04/11 Python