考察事件循环、任务队列、和setTimeout、Promise结合,以输出结果顺序的方式来考察
范例1 来自面经 第5题
async function async1(){ console.log('async1 start') await async2() console.log('async1 end') } async function async2(){ console.log('async2') } console.log('script start') setTimeout(function(){ console.log('setTimeout') },0) async1() new Promise(function(reslove){ console.log('promise1'); resolve() }).then(function(){ console.log('promise2') }) console.log('script end')
范例2 来自面经
const pro = new Promise((resolve, reject) => { const innerpro = new Promise((resolve, reject) => { setTimeout(() => { resolve(1); }, 0); console.log(2); resolve(3); }); innerpro.then(res => console.log(res)); resolve(4); console.log("pro"); }) pro.then(res => console.log(res)); console.log("end");