深究JavaScript

这一次,彻底弄懂 JavaScript 执行机制

2020-03-06  本文已影响0人  景元合

前言

今天看到一道题目,问的是宏任务与微任务,看的是一脸懵逼,于是特意研究了一下,在这里特别感谢https://juejin.im/post/59e85eebf265da430d571f89#heading-0这篇文章,帮我搞懂了js运行机制。

背景

console.log('----------------- start -----------------');
setTimeout(() => {
  console.log('setTimeout');
}, 0)
new Promise((resolve, reject) =>{
  for (var i = 0; i < 5; i++) {
    console.log(i);
  }
  resolve();  // 修改promise实例对象的状态为成功的状态
}).then(() => {
  console.log('promise实例成功回调执行');
})
console.log('----------------- end -----------------');

在理解javascript运行机制前,看到这个题目是一脸蒙蔽,直到了解了宏任务与微任务运行机制,才彻底懂了。

1.关于javascript

首先大家都知道javascript是一门单线程语言,所谓的“多线程”也是用单线程模拟出来的。

2.javascript事件循环

大家都知道js分为单线程与多线程,这里引用大神一张图片:


image.png

文字描述:

setTimeout(()=>{console.log('异步')},0);console.log('同步')
//同步
//异步

3.宏任务与微任务

setTimeout(function() {
    console.log('setTimeout');
})
new Promise(function(resolve) {
    console.log('promise');
}).then(function() {
    console.log('then');
})
console.log('console');
//promise
//console
//then
//setTimeout

最后

在nodejs中,微任务也是有执行顺序的,不像浏览器是谁先添加就先执行谁;
node中微任务process.nextTick优先于promise.then优先于await
javascript是一门单线程语言
Event Loop是javascript的执行机制

上一篇 下一篇

猜你喜欢

热点阅读