promise关于宏任务和微任务

145 阅读1分钟

// 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 成功