事件队列&事件循环机制

单线程JS

浏览器是多线程的,但它只分配一个线程供JS自上而下运行,因此JS是单线程的。
基于JS的单线程机制,大部分操作都是同步进行的,也就是任务逐一执行。
但有一些特殊需求,需要按照异步的思维进行处理。

但注意:JS没有真正的异步,只是基于事件队列(Event Queue)和事件循环(Event Loop)机制把一些方法延后执行而已。宏观上貌似是同时在做好几件事,其实就是一会儿做做这个,一会儿做做那个,真正同一时间段内只能做一件事。

AJAX请求除外,此时浏览器会另外分配一个线程进行HTTP事务。

几道例题彻底掌握Event Queue和Event Loop

例1. 入门级

let n = 0;
setTimeout(_ => {
	n += 10;
	console.log(n);
},1000);
n += 5;
console.log(n);

在这里插入图片描述
先列举一下浏览器端常见的宏任务和微任务:

  • 宏任务:
    • 定时器、事件绑定、AJAX/跨域(HTTP请求)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值