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 相关文章推荐
js刷新框架子页面的七种方法代码
Nov 20 Javascript
最佳JS代码编写的14条技巧
Jan 09 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
js实现自定义进度条效果
Mar 15 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
May 26 Javascript
jQuery实现frame之间互通的方法
Jun 26 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
Jan 07 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
php制作文本式留言板
2015/03/18 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
详解JS函数重载
2014/12/04 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
12岁生日感言
2014/01/21 职场文书
个人作风剖析材料
2014/02/02 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
食品安全工作方案
2014/05/07 职场文书
供电工程专业求职信
2014/08/09 职场文书
金融保险专业求职信
2014/09/03 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
先进班组事迹材料
2014/12/25 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
nginx 配置缓存
2022/05/11 Servers