`
webdev2014
  • 浏览: 675309 次
文章分类
社区版块
存档分类
最新评论

node.js第四课(回调函数与事件)

 
阅读更多

一、回调函数
1.异步式读取文件
var fs=require('fs');
fs.readFile('file.txt','utf-8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
});
console.log('end.')
结果:
end.
Contents of the file.
2. 同步式读取文件
var fs=require('fs');
var data=fs.readFileSync('file.txt','utf-8');
console.log(data)
console.log('end.')
结果:
Contents of the file.
end.
3.分析:
调用时所做的工作知识将异步式IO请求发送给了操作系统,然后立即返回并执行后面的语句,
执行完以后进入事件循环监听事件,当fs接受到IO请求完成的事件时。事件循环会主动调用
回调函数完成后续工作。同步则是阻塞等待完成后,继续执行。
二、事件
1.普通事件的使用
//声明事件对象`
var EventEmitter=require('events').EventEmitter;
var event=new EventEmitter();
//注册事件
event.on('some_event',function(){
console.log('这是一个自定义的事件');
});
//触发事件
setTimeout(function(){
event.emit('some_event');
},1000);
2.Node.js的事件循环机制
(1)Node.js在什么时候进入事件循环呢?
答案是Node.js程序是由事件循环开始,到事件循环结束,所有的逻辑都是事件的回调函数。
(2)如何使用自定义事件呢?
事件的回调函数在执行的过程中,可能会发出IO请求或直接发射(emit)事件,执行完毕后再返回事件循环。
分享到:
评论

相关推荐

    Node.js 开发指南.pdf

    3.2.2 回调函数 31 3.2.3 事件 33 3.3 模块和包 34 3.3.1 什么是模块 35 3.3.2 创建及加载模块 35 3.3.3 创建包 38 3.3.4 Node.js包管理器 41 3.4 调试 45 3.4.1 命令行调试 45 3.4.2 远程调试 ...

    Node.js+开发指南

    3.2.2 回调函数 31 3.2.3 事件 33 3.3 模块和包 34 3.3.1 什么是模块 35 3.3.2 创建及加载模块 35 3.3.3 创建包 38 3.3.4 Node.js包管理器 41 3.4 调试 45 3.4.1 命令行调试 45 3.4.2 ...

    Node.js MongoDB AngularJSWeb开发中文版.part1

    第4章 在Node.js中使用事件、监听器、定时器和回调 51 4.1 了解Node.js事件模型 51 4.1.1 比较事件回调和线程模型 51 4.1.2 在Node.js中阻塞I/O 52 4.1.3 会话示例 54 4.2 将工作添加到事件队列 54 4.2.1 实现定时器...

    node.js事件轮询机制原理知识点

    如果之前设置过setImmediate函数,直接进入下一个check阶段,如果之前没有设置过setImmediate函数,在当前 poll阶段等待,直到轮询队添加回调函数,就会去第一个情况执行,如果定时器到点了,他

    metasync:JavaScript和Node.js的异步编程库

    异步编程库安装$ npm install metasync异步功能组成metasync(fns)(data, done) fns -的回调函数最后阵列,回调contranct ERR-第一data -输入数据(可选) done -错误优先回调返回:组成的callback-last / err-first...

    新浪微博的Node封装nodeweibo.zip

    node-weibo v2.0 是对新浪微博的API的封装,基于Node.js,认证方式采用OAuth2.相对node-weibo v2.0之前版本的特性有:(1)更加易于后面的拓展,比如新增函数,不会影响旧版本的使用(2)更加高效和管理,尊重微博API的...

    paypal-express-checkout:一个执行PayPal Express Checkout工作流程的Node.js模块

    传递给该函数的回调有两个参数。 第一个参数是错误对象(如果没有错误,则为null),第二个参数是用于完成零售商网站上结帐过程的返回URL。 如果未提供回调,则该函数将返回一个Promise ,该Promise将通过返回URL...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     9.2.2 通过回调函数进行过滤   9.2.3 操纵DOM文档   9.3 处理事件   9.3.1 注册事件   9.3.2 自定义事件   9.4 访问和操纵样式   9.5 通信   9.6 小结   第10章 添加效果增强用户体验  ...

    高效查询纯真IP库lib-qqwry.zip

     Area: ' CZ88.NET' } ]searchIPScopeAsync(beginIP,endIP,callback) IP段查询的异步方法searchIPScope() 的异步方法,查询结果会以第一个参数的形式传给回调函数;DBUG(Bool) 调试模式开关,默认未启用DUBG模式会...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part2.rar

     9.2.2 通过回调函数进行过滤   9.2.3 操纵DOM文档   9.3 处理事件   9.3.1 注册事件   9.3.2 自定义事件   9.4 访问和操纵样式   9.5 通信   9.6 小结   第10章 添加效果增强用户体验  ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     9.2.2 通过回调函数进行过滤   9.2.3 操纵DOM文档   9.3 处理事件   9.3.1 注册事件   9.3.2 自定义事件   9.4 访问和操纵样式   9.5 通信   9.6 小结   第10章 添加效果增强用户体验  ...

    DWR.xml配置文件说明书(含源码)

    DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动将这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以...

    jquery插件使用方法大全

    它几乎与 $.get(url, data, success) 等价,不同的是它不是全局函数,并且它拥有隐式的回调函数。当侦测到成功的响应时(比如,当 textStatus 为 "success" 或 "notmodified" 时),.load() 将匹配元素的 HTML 内容...

    nodejs:原生nodejs+ES6实现爬虫

    原生node和jsdom实现爬虫 项目介绍 使用node原生模块+jsdom/cheerio模块,实现http和https通用的爬虫工具 目录不定时更新爬成功的网站 目录libs是封装好的请求方法 ...其中res=>{}是请求成功后的回调函数,req用

    nodejs-fs:探索NodeJS的fs模块

    异步方法将最后一个参数作为完成函数回调,而回调函数的第一个参数为error。 最好使用异步方法而不是同步方法,因为前者永远不会阻止后者执行的程序执行。 流是使您可以连续地从源读取数据或将数据写入目的地的...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +为ExtAspNet.Alert.Show增加点击确定的JavaScript回调函数。 -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!",...

    ExtAspNet_v2.3.2_dll

    +为ExtAspNet.Alert.Show增加点击确定的JavaScript回调函数。 -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!",...

    cronofy-node:Cronofy API的节点包装

    如果没有将回调作为第二个参数传递,则该函数将作为promise。 使用范例 var Cronofy = require ( 'cronofy' ) ; var cronofyClient = new Cronofy ( { client_id : 'armzr1h5NPQST93XTFL9iIULXxfdDlmV' , client_...

Global site tag (gtag.js) - Google Analytics