以下是我对JS循环机制的认知!
浏览器环境下JS引擎的Event Loop(事件循环)机制
运行栈:同步
任务队列:异步
事件循环: 先运行栈后运行任务队列,然后再运行栈然后再运行任务队列 一直循环
异步分类:
宏任务:计时器,ajax,读取文件(node里面的fs模块)
微任务:promise.then
执行顺序:
1.同步程序
2.process.nextTick(一次事件循环的运行栈和任务队列之间)
3.微任务
4.宏任务
5.setImmediate(一次事件循环任务队列后)
(1).先执行同步代码
(2).遇到异步宏任务放到宏任务队列中
(3).遇到异步微任务放到微任务队列中
(4).当所有的同步代码执行完毕后,再将异步微任务从微任务队列中调入到主线程执行
(5).微任务执行完毕后,再将异步宏任务从宏任务队列中调入到主线程执行
(6).一直按上循环直到执行完毕
for (var i = 0; i <= 3; i++) {
setTimeout(() => {
console.log(i+'宏');
}, 1000);
}
console.log(i);
var i = 10;
//var i
//执行for循环 然后遇到setTimeout放到宏任务队列中
//然后此时i = 4
//执行consolo.log(i)
//执行i = 10 预定义
//然后等到1秒后直接出现4个 10宏 至于怎么样改变最后成0,1,2,3,再后面两章会写!
emm...最近病更严重了!气死!!!
每天疼到凌晨1点才能睡着,大家都要好好保护好自己的身体!!!