zoukankan      html  css  js  c++  java
  • 异步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('读取文件结束');
            });

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

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

  • 相关阅读:
    VUE中引入zTree
    如何获取别人提供的接口,获取他接口里面的数据。
    com.fasterxml.jackson.databind.exc.InvalidDefinitionException
    2.Elasticsearch环境安装配置
    1.Elasticsearch概述
    Java中如何操作Redis
    基于Redis实现分布式锁
    Mybatis插件--数据库读写分离
    Mybatis插件--自定义分页
    7. Mybatis日志
  • 原文地址:https://www.cnblogs.com/pangzi666/p/5887852.html
Copyright © 2011-2022 走看看