async、promise、setTimeout共存执行顺序
async、promise、setTimeout共存执行顺序
async function async1() { console.log('async1 start') //2 //遇见await 执行await右边紧跟的表达式,然后让出线程,跳出async函数,
等待本轮同步代码全部执行完毕后再回头执行await 后面阻塞的代码 //await等待的结果分为两种情况:不是promise对象;是promise对象 //如果不是promise对象,await会阻塞后面的代码,先执行async外面的同步代码,
同步代码执行完,再回到async内部,把这个非promise的东西,作为await表达式的结果。 //如果等到的是一个promise对象,await也会暂停后面的代码,先执行async外面的同步代码,
等着promise对象fulfilled,然后把resolve的参数作为await表达式的运算结果。 await async2() console.log('async1 end') //5 } async function async2() { console.log('async2') //3 } console.log('script start') //1 setTimeout(function () { console.log('setTimeout') //7 }, 0) async1(); //2 new Promise(function (resolve) { console.log('promise1') //4 resolve(); }).then(function () { console.log('promise2') //6 }) console.log('script end') //5