美文网首页
js事件循环

js事件循环

作者: spencer_sun | 来源:发表于2020-06-01 15:46 被阅读0次

1 js的事件循环

js 是一门单线程语言,为了协调事件,用户交互,脚本, UI渲染方面和网络处理等行为,浏览器引擎必须使用eventLoop。 本文主要讨论浏览器引擎的eventLoop。 node的eventLoop是有libuv实现的。

2 微任务和宏任务

宏任务(macroTask)主要包括script 整体代码, setTimeOut,setInterval,I/O, UI交互事件,
微任务(microTask)主要包括promise, mutationObserve,process.nextTick (node);

3 宏任务和微任务的执行顺序

先读取script整体代码(宏任务),识别的微任务和宏任务分别push进任务队列, 然后执行所有的微任务,直到清空所有的微任务,再执行宏任务,然后微任务,如果循环。


事件队列.jpg

demo代码来看宏任务和微任务的执行顺序

   eventLoopTest1() {
            console.log("script start");

            setTimeout(function() {
                console.log("setTimeout");
            }, 0);

            Promise.resolve()
                .then(function() {
                    console.log("promise1");
                })
                .then(function() {
                    console.log("promise2");
                });

            console.log("script end");
        },
1.png
 eventLoopTest2() {
            console.log("script start");

            setTimeout(function() {
                console.log("timeout1");
            }, 10);

            new Promise(resolve => {
                console.log("promise1");
                resolve();
                setTimeout(() => console.log("timeout2"), 10);
            }).then(function() {
                console.log("then1");
            });

            console.log("script end");
        },
Screen Shot 2020-06-01 at 3.43.26 PM.png

参考内容
[深入理解js事件循环机制]([https://www.cnblogs.com/yugege/p/9598265.html](https://www.cnblogs.com/yugege/p/9598265.html) )

相关文章

  • js事件循环

    js 是单线程的, js 的异步事件就是依赖于事件循环机制 事件循环 首先,我们来解释下事件循环是个什么东西: 就...

  • 2019-03-28

    JS 事件循环机制 - 任务队列、web API、JS主线程的相互协同 这篇文章的核心是分析js的事件循环,在此我...

  • Vue源码分析—响应式原理(四)

    nextTick JS 运行机制 JS 执行是单线程的,它是基于事件循环的。事件循环大致分为以下几个步骤: 所有同...

  • Js事件循环

    列表 JavaScript事件循环 测试金字塔 stub JavaScript事件循环理解 javaScript语...

  • js事件循环

    js是单线程的,那么是否代表参与js执行过程的线程只有一个? 答案:不是的,一共有4个线程参与该过程,但是永远只有...

  • js 事件循环

    先上代码 执行栈与事件队列 当javascript代码执行的时候会将不同的变量存于内存中的不同位置:堆(heap)...

  • js事件循环

    在js代码中,除了同步代码,就是异步代码,一个js文件是从上往下执行,遇到ajax,点击事件。settimeout...

  • JS事件循环

    深入理解javascript中的事件循环 (1)JS为何设计为单线程 js设计为单线程还是跟他的用途有关 试想一下...

  • JS事件循环

    之前在公众号发的一篇文章,在这里再发一次 先来看一道常见的面试题,请给出下面程序的打印顺序 单纯记住答案没有什么意...

  • js事件循环

    1 js的事件循环 js 是一门单线程语言,为了协调事件,用户交互,脚本, UI渲染方面和网络处理等行为,浏览器引...

网友评论

      本文标题:js事件循环

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