简单理解JS的运行机制

272 阅读1分钟

我们都知道js是单线程执行的,但当遇到异步操作时,会把异步操作放到任务队列里,等主线程执行完,才会去执行任务队列里的异步操作。一说到任务队列,相信大家都知道都是先进先出的顺序。异步操作又涉及到宏任务微任务,想问问大家,宏任务有哪些?微任务有哪些?
先让大家看看下面这例子输出的结果是什么

console.log(1);
setTimeout(() =>{
console.log(2)
})
Promise.resolve().then(function() {
console.log(3)
})
Promise.resolve().then(function() {
setTimeout(() =>{
console.log(4)
})
})
setTimeout(() =>{
Promise.resolve().then(function() {
console.log(5)
})
})
new Promise(function(resolve, project) {
console.log(6)
}).then(function() {
console.log(7)
})

输出结果为:

image.png
具体解析看下图:

image.png