async function async1() {
console.log('async1 start')
await async2()
console.log('async1 end')
}
function async2(){
console.log('async2')
}
console.log('script start')
setTimeout(item=>{
console.log('setTimeout')
},1000)
async1()
new Promise((resolve,reject)=>{
console.log('promise1')
resolve()
}).then(()=>{
console.log('promise2')
})
//script start
//async1 start
//async2
//promise1
//async1 end
//promise2
//setTimeout
eventLoop分为宏任务和微任务
宏任务:Javascript同步代码、setTimeout、setInterval
微任务:Promise.then() async方法中的await执行之后的代码
先执行宏任务再执行微任务,再执行下一轮的宏任务和微任务,往复循环
new Promise()是同步执行,回调then才是异步操作
async/await
async定义的方法,如果没有await,那么这个函数就是一个普通的同步函数
如果有await定义,那么无论await之中是否是同步还是异步,之后的代码都不会再执行,都会放到微任务之中
本文详细探讨了JavaScript中异步编程的概念,包括宏任务和微任务的区别,async/await及Promise的工作原理。通过具体代码示例,展示了不同异步机制的执行顺序,帮助读者理解事件循环机制。

1374

被折叠的 条评论
为什么被折叠?



