From d9367eba188762cb133273d9d714faa142f3b7db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A9=B9=E7=A9=8E?= <5431277+zhanying189@user.noreply.gitee.com> Date: Mon, 24 May 2021 14:05:37 +0800 Subject: [PATCH] =?UTF-8?q?update=20part1/fed-e-task-01-01/code/=E7=AE=80?= =?UTF-8?q?=E7=AD=94=E9=A2=98.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/\347\256\200\347\255\224\351\242\230.md" | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 7fc329a..8c4c8d0 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 -- Gitee