eventLoop

进程:指一个程序
线程:程序中具体做事的人
js运行机制:一个人同时只能做一件事情
同步:如果只有一个人这件事做不完,下件事做不了
异步:可以同时做多个事情, 这件事没做完,下一件事其他人可以做

浏览器是多线程的
+ GUI渲染线程,渲染和解析页面
+ JS引擎线程:渲染和解析Js 【浏览器分配一个线程去解析js,所以js是单线程的】
+ 定时器监听线程
+ 事件监听线程
+ HTTP网络请求线程【同源下浏览器最多分配5-7HTTP线程】

JS是单线程运行,所以大部分代码是同步的(例如:循环…)
+所以不要在代码中写“死循环”,“死递归” …操作 ,这些操作会一直占用
js引擎线程,导致其他代码无法执行

  • 但是js单中也有异步操作代码
  • 【异步微任务】:
  • requestAnimateFrame
  • Promise.then/catch/finally
  • async/await
  • queueMicrotask 手动创建一个异步的微任务
  • MuationObserver 监听dom元素属性值改变
  • IntersectionObserver
    【异步宏任务】
  • setTimeout/setInterval
  • 事件绑定/队列
  • XMLHttpRequset/Fetch
  • MessageChannel

JS中的异步线程:是借用浏览器的多线程机制,再基于eventLoop事件循环机制,实现单线程异步效果

console.time('AA')
for(let i=0;i<999999;){}
console.timeEnd('eeeee')
console.log('ok')


setTimeout(()=>{
 console.log('1')
},0)也不是立即执行,而是等待5-7ms  是【浏览器】最快的处理时间
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值