js中异步事件中容易混淆的 Promise 和 setTimeout 的执行顺序是怎样的?
setTimeout(() => console.log(1), 0); new Promise(function (resolve, reject) { console.log(2); //resolve(1); setTimeout(function(){ console.log(3); resolve(1); }, 0); }) .then(() => { console.log(4) }) console.log(5) setTimeout(() => console.log(6), 1000); setTimeout(() => console.log(7), 0); setTimeout(() => console.log(8), 1000);
输出:
2 5 1 3 4 7 6 8
如果Promise中不包含异步事件:
setTimeout(() => console.log(1), 0); new Promise(function (resolve, reject) { console.log(2); resolve(1); // setTimeout(function(){ // console.log(3); // resolve(1); // }, 0); }) .then(() => { console.log(4) }) console.log(5) setTimeout(() => console.log(6), 1000); setTimeout(() => console.log(7), 0); setTimeout(() => console.log(8), 1000);
输出:
2 5 4 1 7 6 8
原文:https://www.cnblogs.com/fanlu/p/10824932.html