zoukankan      html  css  js  c++  java
  • node 同步和异步的概念

    我们学习node的文件系统模块fs时node给我们提供了两种方式操作文件:同步和异步 今天重点讲解下异步操作,node中的异步编程思想 首先我们通过一个简单的案例来了解一下异步

    <script>
    console.log("111111");
    
    setTimeout(()=> {
        console.log("222222");
    }, 400)
    
    console.log("333333");
    
    setTimeout(()=> {
        console.log("444444");
    },300)
    
    console.log("555555");
    </script>
    
    //思考一下 当我们运行上面的代码,log打印的顺序是什么?

    按照我们平时写代码的经验是代码从上往下依次按照顺序执行:

    111111

    222222

    333333

    444444

    555555

    但我们实际运行的结果是

     为什么会造成这样的情况呢?我们先卖个关子!先来说下同步的概念

    Js是在设计之出就是为了解决页面交互,操作DOM的能力,js是单线程的,因为一次只能执行一段代码 所以默认执行顺序就是同步的。但因为多核cpu让js有了异步的模式

    同步的优点是:顺序执行,不会出现第二段代码还未执行第三段就执行的情况

    同步的缺点是:阻塞 当执行的代码段时间太长 后续的代码只能等待上段代码执行完 就会造成卡死的状态 这对用户相当不友好,用户体验很差。

    所以当请求时间比较长的程序,就用异步来解决如:网络请求 文件IO 等..

    异步的优点:非阻塞 接收到任务先传到后台 再去接收其它任务 然后按照执行速度执行 谁执行快就先执行谁

    异步的缺点:会出现第二段每执行 第三段就执行了 会导致错误

    所以回到上面那个例子就是,谁执行快就先执行谁的

  • 相关阅读:
    十六.jQuery源码解析之Sizzle设计思路.htm
    关于微信浏览不能URL传参,URL中的问号被删除
    websocket 通信协议
    java_httpservice
    Socket.Io 做个标记 下来了解下
    通过netty实现服务端与客户端的长连接通讯,及心跳检测。
    NETTY 编码器介绍
    Netty4.0学习教程
    FORM表单不刷新提交POST数据
    Linux0.11学习
  • 原文地址:https://www.cnblogs.com/qjuly/p/14494116.html
Copyright © 2011-2022 走看看