New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[js] 第48天 你对事件循环有了解吗?说说看! #183
Comments
事件循环机制和异步有关。 从阮一峰大佬教程上摘抄的:
|
|
浏览器事件循环分为
|
学习了一波,出了一波笔记 |
大家写得差不多了
复制代码 |
setTimeout 就是作为宏任务来存在的,而 Promise.then 则是具有代表性的微任务 |
js主线程拥有一个执行栈(同步任务)和一个任务队列(宏任务、微任务),主线程会依次执行。 |
js 是单线程语言,在同一时间只能执做一件事情,但是如果说是碰见Ajax请求,或者说是setTimeOut等,如果按照单线程来说,就一直会阻塞下面的代码去执行,所以有了同步任务和异步任务的概念。 js调用栈采用后进先出的原则,当函数执行的时候会被添加到栈顶,当执行栈执行完成后,就会被栈顶移除,直到栈内被清空。 js同步任务会在执行栈中按照顺序等待主线程依次执行,异步任务会在异步任务有了结果后,将回调函数添加到任务队列中,等待主线程空闲也就是执行栈被清空后,被读取到栈内等待主线程的执行。 任务队列是一种先进先出的数据结构(队列) 任务队列中分宏任务和微任务两种,常见的宏任务有script setTimeout setIntelval 常见的微任务有promise.then 事件循环(Event Loop) 当执行栈执行完所有的同步任务后会检查执行栈是否为空,如果为空就去检查微任务队列,如果为空的话就去执行宏任务,如果不为空就一次性执行完微任务。 |
第48天 你对事件循环有了解吗?说说看!
The text was updated successfully, but these errors were encountered: