如在前端中使用ajax发送请求
$.post('/url', {title: 'Node.js'}, function (data) {
console.log('收到响应');
});
console.log('发送ajax结束');
熟悉异步的都知道,在$.post()执行后,后续的代码是被立即执行的,而收到响应
这段的执行时间是不被确定的,所以最后的输出也是先输出发送ajax结束
,然后在输出收到响应
ajax的执行原理
而node中的异步I/O和ajax的调用相似
var fs = require('fs');
fs.readFile('/path', function (err, file) {
console.log('读取文件');
});
console.log('发起读取文件');
同理也是先输出发起读取文件
,然后在输出读取文件
,这里也是一个异步调用
node的执行原理
并且在node中大多数操作都是异步方式调用的
fs.readFile('/path1', function (err, file) {
console.log('读文件1');
});
fs.readFile('/path2', function (err, file) {
console.log('读文件2');
})
上面两个读取文件的耗时取决于最慢的那个文件读取耗时;
而对于同步来讲,读取文件的耗时是两个任务耗时之和。
所以这就是异步的优势所在
网友评论