JavaScript对浏览器异步实现机制的理解

一,浏览器的异步实现原理
首先JS是一门脚本语言,他的执行顺序是从上到下逐行执行的,浏览器只有一个javascript引擎,所以浏览器同时只能执行一个任务。即浏览器的javascript引擎是单线程的,但是浏览器本身是多线程的。

JavaScript代码可以异步执行,但并不意味着它是跑在多个线程里。那么异步到底是什么意思?

假设浏览器是同步执行的话,发送一个Ajax请求,向服务端请求数据,Ajax请求会冻结住,不让后面的代码执行,直到收到服务端的响应,就会造成阻塞。
实际上,你并不是立即得到响应——你需要等待一小段时间,让服务端返回数据。在等待响应的过程中,程序运行着你其他部分的代码。这个便是异步。

JS引擎在解析代码的时候,遇到settimeout和setInterval或者ajax会把它们先放进任务队列里面,先执行剩下在主栈列内的代码。在执行完主栈列的代码后,并不会马上去任务队列内找任务放到主栈列,而是先查找刚刚是不是有需要渲染引擎,如果有的话就会切换渲染线程。之后才会去查找队列任务,采取的是轮询机制,ajax比settimeout和setInterval优先级高。

二,实现异步的方法
https://www.cnblogs.com/goloving/p/9380136.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值