异步I/O

学习node的同学都知道,Node的结构与Chrome十分相似。它们都是基于事件驱动的异步框架,Node通过事件驱动服务I/O;

来我们说下一异步I/O,对于前段来说,最直观场景体现就是ajax请求;

我们看一个例子

        $.post('/url', {title: '深入浅出Node.js'}, function (data) {
            console.log('收到响应');
        });
        console.log('发出Ajax结束');

 

 当post执行的时候,我们会先看到 "发出Ajax结束",而"收到响应"的时间是不被预期的,

异步调用对结果的捕捉符合"Don't call me,I will call you!"的原则,来我们看一下执行的过程;

在 node 中异步也很常见,已读取文件为例,我们看一段代码

        var fs = require('fs');
fs.readFile(
'/path',function(err,file){ console.log('读取文件结束'); }); console.log('发起读取文件');

 

这里的 “发起读取文件” 是在 “读取文件” 之前执行的,是不是和ajax的非常类似呢!

 

 

在node 中 90%以上的操作是异步的进行的,异步执行在时间上明显低于同步

再看一段代码

        fs.readFile('/path1',function(err,file){
            console.log('读取文件结束');
        });
        fs.readFile('/path2',function(err,file){
            console.log('读取文件结束');
        });

这一段代码的执行的时间是什么???

如果的同步的话,执行时间将是两者之和

 

posted @ 2016-09-20 10:34  月半字  阅读(203)  评论(0编辑  收藏  举报