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 相关文章推荐
转一个日期输入控件,支持FF
Apr 27 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
Aug 26 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
Jun 30 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
js select实现省市区联动选择
Apr 17 Javascript
原生js验证简洁注册登录页面
Dec 17 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
webpack中使用iconfont字体图标的方法
Feb 22 Javascript
layui table数据修改的回显方法
Sep 04 Javascript
微信小程序canvas开发水果老虎机的思路详解
Feb 07 Javascript
React倒计时功能实现代码——解耦通用
Sep 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php无限遍历目录示例
2014/02/21 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP实现小偷程序实例
2016/10/31 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
js 链式延迟执行DOME
2012/01/04 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
js中less常用的方法小结
2017/08/09 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
浅谈React高阶组件
2018/03/28 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python绘制雪景图
2019/12/16 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
前台文员我鉴定
2014/01/12 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
教师党员公开承诺书
2014/03/25 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
公司员工体检通知
2015/04/21 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python