Promise、async/await、setTimout执行顺序

			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之中是否是同步还是异步,之后的代码都不会再执行,都会放到微任务之中

你可能感兴趣的:(前端)