js 运行机制

作者: 爱看小说的叶子 | 来源:发表于2020-06-08 10:23 被阅读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

    相关文章

      网友评论

        本文标题:js 运行机制

        本文链接:https://www.haomeiwen.com/subject/zwzktktx.html