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 等..

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

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

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

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/qjuly/p/14494116.html
Copyright © 2011-2022 走看看