js执行顺序(微任务 宏任务)

//Promise执行 执行resolve会进then   执行reject会进入catch
setTimeout(()=>{ console.log('set1'); }) new Promise((resolve,reject)=>{ console.log('p1'); resolve();
    //同步 }).then(()
=>{ console.log('then1');
    //异步 })
.catch((err) => {
        console.log(err)
    })

    console.log(1);

【'set1'】//宏
【‘then1’】//微

上述代码执行后输出值:p1,1,then1,set1

setTimeout(()=>{
        console.log('set1');
        new Promise((resolve,reject)=>{
            console.log('p2');
            resolve();
        }).then(()=>{
            console.log('then2')
        })
    })
    new Promise((resolve,reject) =>{
        console.log('p1');
        resolve();
    }).then(()=>{
        console.log('then1');
        setTimeout(()=>{
            console.log('set2')
        })
    })
    console.log(1);

// p1,1,then1,set1,p2,then2,set2

解析:

 

异步队列中包含宏任务微任务。先执行微任务,后执行宏任务

微任务:Promise,process.nextTick

宏任务:script代码,setTimeout,setInterval

 

posted @ 2020-05-21 14:20  dongxiaolei  阅读(286)  评论(0编辑  收藏  举报