Promise:微任务、宏任务和同步
js的执行步骤是:
- 同步>微任务>宏任务
先执行同步,在执行微任务,最后执行宏任务。
一下代码:
let promise = new Promise(resolve=>{
setTimeout(()=>{
resolve();
console.log('settimeout')
},0);
console.log('promise')
}).then(value=>console.log('then'))
console.log('外面的console')
当js顺序执行的时候遇到setTimeout师将其加入到宏任务队列,准备执行。
然后继续执行到console.log(‘promise’),then()中的任务要在resolve()执行后才将任务加入到微任务队列,
所以先执行宏任务中的setTimeout,执行resolve,then将任务加入微任务队列准备执行,打印’settimeout’,最后打印’外面的console’。好吧我知道,我解释的很不好,因为比较忙,下次有空了再重新整理描述。