Skip to content

01 事件循环和异步IO

index.js
js
/**
 * 什么是事件循环
 * 编写的JavaScript 浏览器或者Node 之间的桥梁 
 */

/**
 * 什么是进程(process)? 什么是线程(thread)?
 * 进程:启动一个应用程序 就会启动一个或多个线程
 * 线程 每一个线程,启动 一个代码 开启一个线程 这个线程为主线程
*/
/**
 * Node的架构分析
 * 循环(EventLoop)是由libuv(c语言)实现
 * 
*/

/** 
 * 阻塞IO非阻塞IO
 * 
 * 非阻塞IO的问题?
 * 读取数据 尚未完成 可能已经返回结果了,通过轮训 来实现文件读取直到读完。
 * libv 提供了一个线程池
 * 获取到结果后 放到事件循环(队列里)
 * 事件循环 调用 执行程序对应的回调函数;
 */

/**
 * 阻塞与非阻塞 和 同异步的区别?
 * 
 * 阻塞非阻塞 是针对调用者来说的;
 * 
 * 同步异步 是针对调用者说的;
*/

/**
 * Node 事件循环的阶段
 * 定时器阶段
 * 待定回调
 * idle  (仅供系统内部使用)
 * 轮询
 * 检测 setImmediate 回调函数
 * 关闭的回调函数
 * 
 */

/**
 * Node 的宏任务和微任务
 * 宏任务 :setTimeout setInteral IO事件 setImmedite close 事件
 * 微任务 Promise 的回调 process.nextTick queueMicrotask
 * 
 */