Node.js的回调函数以及事件循环
来源:互联网 发布:linux cp命令 覆盖 编辑:程序博客网 时间:2024/05/14 14:04
Node.js回调函数
Node.js是单进程单线程应用程序,但是可以通过事件和回调支持并发操作
Node.js的异步编程依托于回调实现。Node.js中有大量的回调函数函数,Node的所有API都支持回调函数。
异步编程就是并发性的运行程序。使得可以同时运行多项工作减少了设备的阻塞和等待。可以处理大量的并发请求。
阻塞实例:
var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());
非阻塞代码实例
var fs = require("fs");fs.readFile('input.txt',function(err.data){ if(err) return console.error(err); console.log(data.toString()); });
阻塞是按顺序执行,非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们需要写在回调函数内。
事件循环
Node.js基本上所有的事件机制都是用设计模式中观察者模式实现
事件驱动程序
Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。
当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。
这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)
在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。
驱动的流程如图,事件由web server接收,并放入到事件队列中,又由Event Handlers 来调用相应的处理来处理事件。
实例:
//引入events模块,其实就是不断的调用触发事件,但是实现定义好关联好事件与Observervar events = require('events');//引入Events模块var eventEmitter = new events.EventEmitter();//创建evetEmitter对象,每一个事件的循环都需要以上两步//创建事件处理程序var connetHandler = function connected(){ console.log('连接成功'); //触发 data_received事件 eventEmitter.emit('data_received'); }//绑定connection事件处理程序eventEmitter.on('connection',connectionHanlder);//使用匿名函数绑定data_received事件eventEmitter.on('data——received',function(){ console.log('数据接收成功'); });//触发connection事件eventEmitter.emit('connection');console.log("程序执行完毕。");
阅读全文
0 0
- Node.js的回调函数以及事件循环
- Node.js 事件循环和回调函数
- node.js回调函数与事件
- node js 学习(2)回调函数 事件循环 buffer stream 模块系统
- node.js第四课(回调函数与事件)
- 浅谈node.js 回调函数与事件机制
- Node.js 回调函数
- Node.js 回调函数
- Node.js回调函数
- Node.js 回调函数
- node.js 回调函数
- Node.js 回调函数
- Node.js 回调函数
- Node.js 回调函数
- node.js回调函数
- node.js:回调函数
- Node.js 回调函数
- Node.js的事件循环
- POJ 2689 Prime Distance【素数筛法】
- getParameter和getAttribute的区别
- POJ2785-4 Values whose Sum is 0
- 如何解决同一URL 地址,服务器图片更变了,客户端怎么判断是否需要更变
- 微信小程序快递鸟查物流
- Node.js的回调函数以及事件循环
- mybatis 智能标签+多条件查询
- Mysql多列加自定义排序
- iOS开发技巧。
- 关于工作激情与项目管理的思考
- Linux下配置JDK、Tomecat
- 【扩展】Freemarker模板遍历集合实现下载word部分文字隐藏
- hdu1176—免费馅饼(dp)
- java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)