diff --git "a/part1/fed-e-task-01-01/code/\347\256\200\347\255\224\351\242\230.md" "b/part1/fed-e-task-01-01/code/\347\256\200\347\255\224\351\242\230.md" index 7fc329a7e0961755f2b7a71b68c6c9ebf47f4e7d..8c4c8d07997f8370960cfcf1415797bddb9bdc32 100644 --- "a/part1/fed-e-task-01-01/code/\347\256\200\347\255\224\351\242\230.md" +++ "b/part1/fed-e-task-01-01/code/\347\256\200\347\255\224\351\242\230.md" @@ -3,6 +3,10 @@ #### 谈谈你是如何理解 JS 异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务? **答:** - +1、JS是单线程的,因为避免与DOM渲染冲突,也避免两段JS操作冲突,所以JS是单线程的,解决单线程的缺陷的办法就是使用异步编程,使用回调函数实现异步; +2、所有同步任务在一个主线程上执行,即存在一个执行栈,一旦执行栈中的同步任务执行完毕,就去任务队列(各种异步任务)上读取任务加入到执行栈中,主线程不断循环上述步骤; +3、消息队列也即任务队列,用来存储待执行的异步事件; +4、对异步事件进行分类,分为宏任务和微任务,同一级别的事件循环里,如果有微任务先执行微任务,再执行宏任务,常见的宏任务有setTimeout,setInterval,addEventListener +5、常见的微任务有promise,mutationObserver,process.nextTick