1、JS 中用来存储待执行回调函数的队列包含2 个不同特定的列队

2、宏列队: 用来保存待执行的宏任务(回调), 比如: 定时器回调/DOM 事件回调/ajax 回调

3、微列队: 用来保存待执行的微任务( 回调), 比如: promise 的回调/MutationObserver 的回调

4、JS 执行时会区别这2 个队列

  4.1 JS 引擎首先必须先执行所有的初始化同步任务代码

  4.2 每次准备取出第一个宏任务执行前, 都要将所有的微任务一个一个取出来执行

 

demo样例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <!-- <script src="customedPromise/promise.js"></script> -->
        <script type="text/javascript">
            setTimeout(() => {
                console.log('timeout callback1()')
                Promise.resolve(3).then(
                    value => {
                        console.log('Promise onResolved3()', value);
                    }
                )
            }, 0)
            setTimeout(() => {
                console.log('timeout callback2()')
            }, 0)
            
            Promise.resolve(1).then(
                value => {
                    console.log('Promise onResolved1()', value);
                }
            )
            Promise.resolve(2).then(
                value => {
                    console.log('Promise onResolved2()', value);
                }
            )
        </script>
    </head>
    <body>
    </body>
</html>
posted on 2019-12-31 01:14  JerryLeePlus  阅读(1226)  评论(0)    收藏  举报