直接贴上代码
async function async1() {
async async2()
console.log("async1 end")
}
async function async2() {
console.log("async2 end")
}
async1()
改为ES5的写法
new Promise((resolve,reject) => {
//console.log("async2 end")
async2()
}).then(() => {
//执行async1函数await之后的语句
console.log("async1 end")
})
当调用async1函数的时候,马上输出async2 end,并且函数会返回一个Promise,在遇到await的时候会让出线程开始执行async1以外的代码(可以把await看作是让出线程的标志)。
然后当所有的同步代码执行完毕,就会去执行所有的异步代码,回到await的位置,去执行then的回调。