程序员

js 运行机制

2020-06-08  本文已影响0人  爱看小说的叶子

Js 是单线程吗?怎么理解单线程?

解:Js是单线程,单线程就是指在一个时间内只能做一件事情。

Js的任务队列是怎样?

解: Js是任务队列分为同步任务和异步任务,一般是同步任务先执行,异步任务放到异步任务栈里,等到同步任务执行才执行异步任务。

案例:  console.log(1)

setTimeOut(function(){ 

    console.log(2)

}, 0) // 虽然这里写着0,但是其实最短是4ms.

console.log(3)    

输出 // 1 3 2

触发异步的有哪些?

解: setTimeout 和 setInterval 、 dom 事件、 promise.then().

注意:new promise()这里是同步的,在then这里才是异步的。 

案例:在页面运行的js在加载的过程中,你去点击页面中的按钮事件,是没有反应的。因为这里dom事件是异步事件,造成以为卡死情况。而js运行加载同步执行完成之后才会执行。

异步任务是怎么放进主线程的呢?

解: 同步任务是放进主线程,而异步任务是放在了任务队列里,一般是任务队列通知主线程,里面的哪个异步任务可以执行了,然后该任务才会放进主线程。然后异步任务又分为宏任务和微任务。当同步任务执行完,会先执行微任务,执行完成再执行宏任务。

宏任务:setTimeout、script、setInterval.

微任务: promise.then、promise.nextTick(node)

Event loop.

参考文章:https://www.jianshu.com/p/e06e86ef2595

上一篇下一篇

猜你喜欢

热点阅读