promise关于宏任务和微任务

 转载:  https://blog.****.net/jiaojsun/article/details/95035626?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

 

https://blog.****.net/RedaTao/article/details/81504532

<script>

    promise关于宏任务和微任务

 

// 1主线上的同步任务先执行,然后再执行微任务

        new Promise(function(resolve){  

            resolve()  

            console.log('promise'); //同步任务      //(promise类似老板)

        }).then(function(value){

            console.log("成功")         //then的回调函数结果由promise执行结果决定的。//(等到老板通知后你才能处理业务)

        })

       console.log('后盾人') //同步任务

      // 结果:promise  后盾人 成功

  

 // 2主线上的同步任务先执行,然后再执行微任务,最后是宏任务

    setTimeout(function(){

    console.log("setTimeout")   //宏任务

    },0)

   new Promise(function(resolve){

        resolve();

        console.log("promise");   //同步任务

    }).then(function(value){

        console.log("成功");       //微任务

    })   

  console.log("后端人");            //同步任务

// 结果:promise  后盾人 成功  setTimeout


 

// 2(特殊情况): 一般都是微任务先执行,然后再执行宏任务,但是在promise里面的宏任务函数,必须先执行完,才能往下执行

let promise=new Promise(function(resove){

    setTimeout(function(){

     console.log("setTimeout");   //宏任务

    },0);

    console.log("promise");   //同步任务

 

}).then(function(value){     //微任务

    // then回调函数是微任务执行由promise执行结果决定的,

    // 所以必须等promise执行完,才能开始,即使在定时器宏任务里面,也要等宏任务加载完毕。

    console.log("成功");

})

console.log("houdunren.com");  //同步任务

//结果:promise houdunren.com setTiout 成功