js EventLoop事件循环机制
1、js是单线程语言,其事件分为:同步任务和异步任务,异步任务分为宏任务与微任务;
2、执行顺序为:同步任务(主流程任务) ---> 微任务 ----> 宏任务
先执行同步任务,遇到异步任务则放入任务队列中,等同步任务执行完毕,执行任务队列中的微任务,再执行宏任务...
主线程从"任务队列"中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop(事件循环)。
3、微任务主要包含:promise.then(fn) fn即会推入微任务队列
宏任务主要包含: setTimeout(fn1,time) fn1即会推入宏任务队列
4、执行顺序例子:
    setTimeout(() => {
            console.log('timer1');
            setTimeout(() => {
                console.log('timer3')
            }, 0)
        }, 0)
        setTimeout(() => {
            console.log('timer2')
        }, 0)
        console.log('start')
        //start\1\2\3
     setTimeout(() => {
            console.log('timer1');
            Promise.resolve().then(() => {
                console.log('promise')
            })
        }, 0)
        setTimeout(() => {
            console.log('timer2')
        }, 0)
        console.log('start')
        //start\1\promise\2
     Promise.resolve().then(() => {
            console.log('promise1');
            const timer2 = setTimeout(() => {
                console.log('timer2')
            }, 0)
        });
        const timer1 = setTimeout(() => {
            console.log('timer1')
            Promise.resolve().then(() => {
                console.log('promise2')
            })
        }, 0)
        console.log('start');
        //start/p1/t1/p2/t2
     const promise1 = new Promise((resolve, reject) => {
            console.log(1);
            setTimeout(() => {
                console.log("timerStart");
                resolve("success");
                console.log("timerEnd");
            }, 0);
            console.log(2);
        });
        promise.then((res) => {
            console.log(res);
        });
        console.log(4);
    //1
     //2
    //3
    //4
    //success
    //timerStart
    //timerEnd
                    
                
                
            
        
浙公网安备 33010602011771号