Promise与setTimeout之间的执行顺序
/** * 要点一: * 当Promise进入落地状态时,与该状态相关的处理程序仅仅会被排期,而非立即执行。 * 而且,跟在添加这个处理程序的代码之后的同步代码一定会在处理程序之前执行。 * ——摘自《JavaScript高级程序设计(第四版)》第11章“期约与异步函数” “非重入期方法”小节 * 要点二: * JS是单线程的,异步任务会被暂存于任务队列,当任务队列中的任务觉得时候到了才到线程上排队执行。 */ //以下输出顺序: 1 4 7 5 2 3 6 console.log(1) setTimeout(() => { console.log(2); Promise.resolve().then(() => { console.log(3) }) }) new Promise((resolve, reject) => { console.log(4) resolve(5) }).then((data) => { console.log(data) }) setTimeout(() => { console.log(6) }) console.log(7)

浙公网安备 33010602011771号