// javascript是一门单线程语言 async function async1() { // async关键字 申明这个function是异步的 console.log('async1 start') // 2 await async2(); //看到了await关键字 它前面的所有代码块执行完以后 才会执行下面的代码 console.log('async1 end') // async 函数返回一个 Promise对象 异步挂起 放到 "任务队列" 5 } async function async2() { console.log('async2')// 3 } console.log('script start') // 第一个同步任务 首先执行完毕 1 setTimeout(function () { console.log('setTimeout')// setTimeout()在主线程最早可得的空闲时间执行,也就是说,同步任务和"任务队列"处理完以后才轮到它。它在"任务队列"的尾部添加一个事件 放到最后 7 }, 0) async1() console.log('12222222221') new Promise(function (resolve) { //传参是个 同步任务 4 console.log('promise1') resolve() }).then(function () { console.log('promise2') // then方法会返回一个新的promise 异步挂起 放到 "任务队列" 6 }) // 下面没有代码了 js开始按顺序执行刚才放到"任务队列"里的代码块
参考地址:https://www.cnblogs.com/zwnsyw/p/12772668.html