浏览器是多线程的,但解析我们的js代码,却是单线程的,但有些任务是需要消耗时间的(比如:上传,读取文件,下载等),如果按照普通的同步方式,就会阻塞我们的代码,主线程的任务没有做完,那么下面的任务将不会执行...,将数据添加到前端页面中
如果把xhr.open()的第三个参数设置为false,则是同步的,当你点击按钮后,你点击下面的方块框,点击事件它是不会执行的,必须得等到上面的事情(加载数据)做完了,在次点击时...首先我们知道了JS里的一种任务分类方式,就是将任务分为: 同步任务和异步任务
虽然JS是单线程的,但是浏览器的内核却是多线程的,在浏览器的内核中不同的异步操作由不同的浏览器内核模块调度执行,异步任务操作会将相关回调添加到任务队列中...按照这种分类方式:JS的执行机制是
首先判断js代码是同步还是异步,不停的检查调用栈中是否有任务需要执行,如果没有,就检查任务队列,从中弹出一个任务,放入栈中,如此往复循环,要是同步就进入主进程,异步就进入事件表...中的同步与异步问题,js是一门单线程的语言,浏览器解析js代码是同步顺序执行的,但是浏览器本身是多线程的,js实现异步是通过事件循环来实现的
定时器setTimeout,setInterval本质上是浏览器提供