程序员的快乐你不懂
宏任务,微任务

宏任务,微任务

宏任务(macro-task):整体代码script、setTimeOut、setInterval       

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

js异步有一个机制,就是遇到宏任务,先执行宏任务,将宏任务放入eventqueue,        然后在执行微任务,将微任务放入eventqueue最骚的是,这两个queue不是一个queue。        当你往外拿的时候先从微任务里拿这个回掉函数,然后再从宏任务的queue上拿宏任务的回掉函数。

<script>
        setTimeout(function() { //异步
            console.log('1') //宏任务
        });
        // promise可以支持多个并发的请求,获取并发请求中的数据 
        new Promise(function(aa) { //利用promise可以将异步操作以同步操作的流程表达出来  但本身不能说promise是异步的
            console.log('2'); //同步任务  (promise类似老板)   
            aa();
        }).then(function() { //微任务  先执行了同步里的微任务  then是Promise原型中的方法
            // then的回调函数结果由promise执行结果决定的。//(等到老板通知后你才能处理业务)
            //因为 then方法是微观任务Promise对象的回调函数,先于 setTimeout 执行
            console.log('3')
        });
        console.log('4'); //同步任务
    </script>