天天看點

async、await、Promise、setTimeout執行順序

先看一段代碼:

async function a2() {
			console.log(3)
		}
		async function a1() {
			console.log(1)
			await a2();
			console.log(2);
		}
		console.log(4)
		a1()
		setTimeout(()=> {
			console.log(5)
		})
		new Promise((resolve, reject)=>{
			console.log(6)
			resolve()
		}).then((data) => {
			console.log(7)
		})
		console.log(8)
           

上面這段代碼,你知道輸出的順序是什麼嗎?

來試着寫一下

來我們來看下輸出:

async、await、Promise、setTimeout執行順序

然後我對上面的代碼稍微改動下:

function a2() {
			console.log(3)
		}
		async function a1() {
			console.log(1)
			await a2();
			console.log(2);
		}
		console.log(4)
		a1()
		setTimeout(()=> {
			console.log(5)
		})
		new Promise((resolve, reject)=>{
			console.log(6)
			resolve()
		}).then((data) => {
			console.log(7)
		})
		console.log(8)
           

我将a2的async去掉了,輸出的順序有變動麼,來我們來看下結果:

async、await、Promise、setTimeout執行順序

我們發現,7和2的位置調換了,為什麼呢?

我突然發現,這個答案可以這裡找到答案,就在這裡寫下入口:async、await、Promise、setTimeout執行順序

js