NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 单线+事件队列 因为JS是单线程的,同一时间只能做一件事情.所以想做多件事件,就引入了事件队列.当JS的解释器解析到了异步任务,就把该任务放入事件队列当中(其实就是回调函数).接着执行下面的代码.当主线程运行结束之后.浏览器提供了事件循环机制.单独的有一个事件循环线程去判断队列当中有没有任务,有任务就取出来放入主线程中,去执行.当它放入主线程之前要判断两个条件,1.主线程现在处于空闲状态.2.该任务满足触发条件(定时任务:延时时间已经达到. 事件函数:事件被触发.ajax:服务器端有数据响应) ``` console.log(1); setTimeout(() => { console.log(2); }, 1); var sum = 0; for (let i = 0; i < 100000000; i++) { sum += i; } console.log(3) ``` 结果 ``` 1 3 2 ```