首先,JavaScript是一个单线程的脚本语言。所以就是说在一行代码执行的过程中,必然不会存在同时执行的另一行代码,就像使用alert()以后进行疯狂console.log,如果没有关闭弹框,控制台 ...
说到宏任务和微任务,我们就不得不提Event Loop 了 JS的本质是单线: . 一般来说,非阻塞性的任务采取同步的方式,直接在主线程的执行栈完成。 . 一般来说,阻塞性的任务都会采用异步来执行,异步的工作一般会交给其他线程完成,然后回调函数会放到事件队列中。 当主线程的任务执行完了 执行栈空了 ,JS会去询问事件队列 执行一个宏任务 先执行同步代码 gt 执行所有微任务 gt UI rende ...
2019-08-14 00:11 1 6270 推荐指数:
首先,JavaScript是一个单线程的脚本语言。所以就是说在一行代码执行的过程中,必然不会存在同时执行的另一行代码,就像使用alert()以后进行疯狂console.log,如果没有关闭弹框,控制台 ...
微任务和宏任务属于一个队列,主要区别在于它们的执行顺序(宏任务执行完如果有可执行的微任务则执行完微任务才会继续执行下一个宏任务) 宏任务:包括整体代码script,,setInterval,setImmediate。 微任务:原生Promise(有些实现的promise ...
在之前的一篇文章中简单理了下JS的运行机制,顺着这条线深入就又遇到了几个概念,什么是事件循环,什么又是宏任务、微任务呢,今天用这篇文章梳理一下。 以下是我自己的理解,如有错误,还望不吝赐教。 事件循环与消息队列 首先大家都知道JS是一门单线程的语言,所有的任务都是在一个线程上完成的。而我们知道 ...
当我们执行 JS 代码的时候其实就是往执行栈中放入函数,那么遇到异步代码的时候该怎么办?其实当遇到异步的代码时,会被挂起并在需要执行的时候加入到 Task(有多种 Task) 队列中。一旦执行栈为空,Event Loop 就会从 Task 队列中拿出需要执行的代码并放入执行栈中执行,所以本质上 ...
说事件循环(event loop)之前先要搞清楚几个问题。 1. js为什么是单线程的? 试想一下,如果js不是单线程的,同时有两个方法作用dom,一个删除,一个修改,那么这时候浏览器该听谁的? 2.js为什么需要异步? 如果js不是异步的话 ...
1.什么是宏任务和微任务 JavaScript把异步任务又做了进一步的划分,分为宏任务和微任务: 宏任务(macrotask) 异步ajax请求;setTimeout、setlnterval;文件操作;其他宏任务 微任务(microtask ...
宏任务(macro-task) 定义 消息队列中的任务称为宏任务。 产生 宿主环境提供的方法是宏任务,例如setTimeout, setInterval。这些都是浏览器或者Node环境实现的。 执行 不断从消息队列中取出并被事件循环执行。 类型 注意 ...
先放上小姐姐的博客地址:https://www.cnblogs.com/zhengyeye/p/10774837.html。 这篇文章是看小姐姐的博客才让自己对宏任务和微任务解决题目有了更多的认识的。 前端里面,很多很优秀的小姐姐,多多接近优秀的小姐姐,多多向她们学习。 言归正传 1.js是一个 ...