nodejs 阻塞与非阻塞
2016-07-18 10:26
393 查看
nodejs 是基于驱动事件的非阻塞I/O模型,node 中所有的api 都支持回调函数,为什么要这么做?这么做有什么优点?
前者先输出文件内容,后输出
而后者正好相反。
阻塞的执行是按照顺序执行的,等结果回来继续往下执行。
而非阻塞则是不用等待代码返回结果,直接往下一步执行。
而非阻塞这样的执行,正是事件驱动的起的作用。
而非阻塞这样的设计可以大大的提高程序性能,减少了程序的等待时间。
阻塞读取
var fs = require('fs'); var data = fs.readFileSync('1.txt'); console.log(data); console.log('读取文件'); /* 输出的结果: 读取的内容 读取文件 */
非阻塞读取
var fs = require('fs') fs.readFile('1.txt',function(err,data){ console.log(data); }); console.log('读取文件'); /* 输出的结果: 读取文件 读取的内容 */
阻塞 & 非阻塞
仔细看两个代码,会发现除了代码不同之外,输出的结果的顺序不同。前者先输出文件内容,后输出
读取文件。
而后者正好相反。
阻塞的执行是按照顺序执行的,等结果回来继续往下执行。
而非阻塞则是不用等待代码返回结果,直接往下一步执行。
而非阻塞这样的执行,正是事件驱动的起的作用。
而非阻塞这样的设计可以大大的提高程序性能,减少了程序的等待时间。
相关文章推荐
- 使用ruby部署工具mina快速部署nodejs应用教程
- Google官方支持的NodeJS访问API,提供后台登录授权
- 浅谈Nodejs观察者模式
- nodejs教程之环境安装及运行
- nodejs中的fiber(纤程)库详解
- 基于NodeJS的前后端分离的思考与实践(五)多终端适配
- 基于NodeJS的前后端分离的思考与实践(二)模版探索
- 实例详解Nodejs 保存 payload 发送过来的文件
- 我的NodeJs学习小结(一)
- Node.js 应用跑得更快 10 个技巧
- nodejs中实现sleep功能实例
- Nodejs异步回调的优雅处理方法
- Windows系统下使用Sublime搭建nodejs环境
- nodejs实现获取某宝商品分类
- nodejs简单实现中英文翻译
- Node.js插件的正确编写方式
- 使用upstart把nodejs应用封装为系统服务实例
- NodeJS Web应用监听sock文件实例
- Nodejs学习笔记之测试驱动
- Nodejs学习笔记之Stream模块