游览器的事件循环机制和node.js的事件循环机制

浏览器的事件循环机制

1.脚本就是一个任务宏任务

2.脚本代码执行然后:js代码是单线程的,在主线程中执行所有的js任务

2.js任务可能调用底层提供异步任务的api:网络任务 promsie 计时器

3. 遇到了异步任务时 就把微任务或者宏任务 添加到底层的子线程中执行

  (1)先执行微任务(比如promise) 

  (2)微任务执行完毕时会触发微任务的回调函数(就是主线程绑定的回调)

  (3)如果微任务执行了 就执行宏任务

  (4)但是不管是微任务还是宏任务都是异步的也就是 虽然微任务先执行宏任务后执行 如果微任务执行的时间久 宏任务执行的时间短,那就是宏任务先调主线程绑定的回调

4.如果执行完微任务后  又去扫描时发现里面有宏/微任务 又按照这个顺来执行

这就是浏览器的事件循环

node.js的事件循环机制

eventLoop 事件循环池

node会把异步任务添加到事件循环池中去执行(子线程)

fs.readFile()   //c/c++ 自己引擎 (硬盘)  所以文件请求也是异步操作

promise         // v8

http.createServer(cb) cb

事件循环池就是node的底层代码: 封装的v8引擎 自己的一些异步代码(c/c++)

谁的异步业务执行完毕 事件循环池中标记事件完成然后回到主线程调用回调函数

//面试:node单线程还是多线程?

如果是主线程的js代码 那必然是单线程 因为js语法是一个单线语法

如果是调用了node提供的或者js提供的异步任务就会在事件循环池中调用对应的引擎 开始子线程异步执行任务

异步的体现: 回调函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值