Node.js探秘(3)--非阻塞IO

        前面讲到Node.js的特性主要有:单线程、非阻塞IO、Google V8引擎、事件驱动。

        举个简单例子来说明下Node.js的非阻塞IO的特性。

        以一个读取文件内容的脚本readme.js为例:

var fs = require('fs'), fileContent = 'nothing';
fs.readFile(__filename, "utf-8", function(err, file) {
    if(err) {
        console.log(err);
        return;
    }
    fileContent = file;
    console.log('finished reading file..\n');
});
console.log('file content: ' +fileContent + ' \n');


        这个脚本读取当前脚本文件的内容,并输出。__filename是node.js的一个全局变量,它的值为当前文件的绝对路径。 用node命令执行该脚本:

        

        程序先执行了最后面的file content打印,等到文件读取完成后,才打印“finished reading file ...”.

        这就是Node.js的非阻塞IO特性。readFile函数就是异步非阻塞读取文件内容。所以后面的程序并不会等待该函数执行完后才执行。这对于很多服务器端处理程序来说,可以说是一个极具诱惑力的特性。

        把上述脚本代码作如下修改:

var fs = require('fs'), fileContent = 'nothing';
fs.readFile(__filename, "utf-8", function(err, file) {
    if(err) {
        console.log(err);
        return;
    }
    fileContent = file;
    console.log('file content: ' +fileContent + ' \n');

});
console.log('waiting for the file reading...\n');
         再次运行,就可以得到我们所要的结果了:

         
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值