详解nodejs异步I/O和事件循环-创新互联
事件驱动模型
创新互联建站主营新抚网站建设的网络公司,主营网站建设方案,app软件开发公司,新抚h5小程序设计搭建,新抚网站营销推广欢迎新抚等地区企业咨询现在我们来看看nodejs中的事件驱动和异步I/O是如何实现的.
nodejs是单线程(single thread)运行的,通过一个事件循环(event-loop)来循环取出消息队列(event-queue)中的消息进行处理,处理过程基本上就是去调用该消息对应的回调函数。消息队列就是当一个事件状态发生变化时,就将一个消息压入队列中。
nodejs的时间驱动模型一般要注意下面几个点:
- 因为是单线程的,所以当顺序执行js文件中的代码的时候,事件循环是被暂停的。
- 当js文件执行完以后,事件循环开始运行,并从消息队列中取出消息,开始执行回调函数
- 因为是单线程的,所以当回调函数被执行的时候,事件循环是被暂停的
- 当涉及到I/O操作的时候,nodejs会开一个独立的线程来进行异步I/O操作,操作结束以后将消息压入消息队列。
下面我们从一个简单的js文件入手,来看看 nodejs是如何执行的。
var fs = require("fs"); var debug = require('debug')('example1'); debug("begin"); fs.readFile('package.json','utf-8',function(err,data){ if(err) debug(err); else debug("get file content"); }); setTimeout(function(){ debug("timeout2"); }); debug('end'); // 运行到这里之前,事件循环是暂停的
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前名称:详解nodejs异步I/O和事件循环-创新互联
浏览路径:http://hbruida.cn/article/cdojhc.html