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 等..
异步的优点:非阻塞 接收到任务先传到后台 再去接收其它任务 然后按照执行速度执行 谁执行快就先执行谁
异步的缺点:会出现第二段每执行 第三段就执行了 会导致错误
所以回到上面那个例子就是,谁执行快就先执行谁的