旅游景点企业网站排名,wordpress 响应式产品展示站,酷 网站模板,做网站和网页概念#xff1a;执行任务和收集异步任务#xff0c;在调用栈空闲时#xff0c;反复调用任务队列里回调函数的一种执行机制
原因#xff1a;JavaScript 是单线程的#xff0c;为了不阻塞 JS 引擎#xff0c;设计执行代码的模型
JS内代码如何执行#xff1a;
执行同步代…概念执行任务和收集异步任务在调用栈空闲时反复调用任务队列里回调函数的一种执行机制
原因JavaScript 是单线程的为了不阻塞 JS 引擎设计执行代码的模型
JS内代码如何执行
执行同步代码遇到异步代码就交给宿主浏览器环境执行。异步有了结果之后把回调函数放到任务队列中排队当调用栈空闲后反复调用任务队列里的回调函数
案例
console.log(1)
setTimeout(() {console.log(2)
}, 0)
console.log(3)
setTimeout(() {console.log(4)
}, 2000)
console.log(5)执行过程 1-JS引擎把console.log(1)放入调用栈中执行后弹出
2-JS引擎发现setTimeout(…, 0) 是异步代码于是将它放入宿主环境浏览器中执行setTimeout(…, 0)完成后放入任务队列中
3-JS引擎把console.log(3)放入调用栈中执行后弹出
4-JS引擎发现setTimeout(…, 2000) 是异步代码于是将它放入宿主环境浏览器中执行setTimeout(…, 2000)要等待2s完成后放入任务队列中
5-JS引擎把console.log(5)放入调用栈中执行后弹出
6-此时JS的调用栈空闲调用任务队列中的回调函数先调用setTimeout(…, 0)中的回调函数console.log(2) 执行后出栈。此时JS的调用栈再次空闲它会保持监视任务队列情况。当2s到时会调用setTimeout(…, 2000)中的回调函数console.log(4) 执行后出栈。
参考AJAX-Day04-07.事件循环_哔哩哔哩_bilibili