nodejs学习笔记
来源:互联网 发布:java培训4个月靠谱吗 编辑:程序博客网 时间:2024/06/08 19:12
Node.js 异步编程的直接体现就是回调。
异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。
回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。
例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。
这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。
阻塞代码实例:
var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());console.log("程序执行结束!");
非阻塞代码实例:
var fs = require("fs");fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString());});console.log("程序执行结束!");
事件驱动:
// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter();// 创建事件处理程序var connectHandler = function connected() { console.log('连接成功。'); // 触发 data_received 事件 eventEmitter.emit('data_received');}// 绑定 connection 事件处理程序eventEmitter.on('connection', connectHandler);// 使用匿名函数绑定 data_received 事件eventEmitter.on('data_received', function(){ console.log('数据接收成功。');});// 触发 connection 事件 eventEmitter.emit('connection');console.log("程序执行完毕。");
在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。Node.js EventEmitter
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。
Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件,
一个fs.readStream对象会在文件被打开的时候发出一个事件。
所有这些产生事件的对象都是 events.EventEmitter 的实例。
Node.js Buffer(缓冲区)
var buf = new Buffer(10);var buf = new Buffer([10, 20, 30, 40, 50]);var buf = new Buffer("www.baidu.com", "utf-8");buf.write(string[, offset[, length]][, encoding]);
string - 写入缓冲区的字符串。
offset - 缓冲区开始写入的索引值,默认为 0 。
length - 写入的字节数,默认为 buffer.length
encoding - 使用的编码。默认为 ‘utf8’ 。
读取buffer:
buf.toString([encoding[, start[, end]]])
参数
encoding - 使用的编码。默认为 ‘utf8’ 。
start - 指定开始读取的索引位置,默认为 0。
end - 结束位置,默认为缓冲区的末尾。
返回值
解码缓冲区数据并使用指定的编码返回字符串。
实例
buf = new Buffer(26);for (var i = 0 ; i < 26 ; i++) { buf[i] = i + 97;}console.log( buf.toString('ascii')); // 输出: abcdefghijklmnopqrstuvwxyzconsole.log( buf.toString('ascii',0,5)); // 输出: abcdeconsole.log( buf.toString('utf8',0,5)); // 输出: abcdeconsole.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde
0 0
- nodejs 学习笔记--debug
- NodeJS学习笔记
- nodejs学习笔记
- nodeJs学习笔记
- nodejs学习笔记
- NodeJS 学习笔记1
- 学习nodejs笔记一
- 学习nodejs笔记二
- Nodejs Monog 学习笔记
- nodejs学习笔记一
- NodeJS学习笔记
- nodejs学习笔记
- nodejs学习笔记1
- nodejs学习笔记2
- NodeJS学习笔记
- nodejs 学习笔记
- Nodejs学习笔记
- NodeJS 学习笔记
- 1030. 完美数列(25)-PAT乙级
- js输入输出问题
- Java实现遍历、排序、查找算法及简要说明
- Linux的消息队列,Windows的邮件槽,使用有感
- 数据库大表分割问题
- nodejs学习笔记
- 算法训练 矩阵乘法
- try{}cath{}不能被if else语句替换的例子
- CodeForces 764B Timofey and cubes
- javascript 第七篇(入门篇)
- python 要点1
- 自己最近的一些小体会和心得
- servlet定时刷新
- git使用配置图解步骤