async await执行顺序
async await执行顺序
async/await
是用于编写异步代码的语法糖,它允许你以类似于同步代码的方式写异步操作。async
关键字声明的函数会返回一个 Promise,而 await
关键字用于等待一个 Promise 完成。
执行顺序如下:
-
调用
async
函数。 -
函数会继续执行,遇到
await
时,控制权会交回给调用者。 -
等待的表达式(通常是一个返回 Promise 的表达式)开始执行。
-
一旦 Promise 解决(fulfilled),函数会从暂停的地方恢复,继续执行后续的操作。
下面是一个简单的例子:
async function firstAsync() {
console.log('First async');
return 'First result';
}
async function secondAsync() {
console.log('Second async');
return 'Second result';
}
async function asyncFunction() {
const firstResult = await firstAsync();
console.log(firstResult);
const secondResult = await secondAsync();
console.log(secondResult);
}
asyncFunction();
执行顺序如下:
-
调用
asyncFunction
函数。 -
首先执行
firstAsync
,打印出 "First async"。 -
遇到
await firstAsync()
,控制权交回给asyncFunction
的调用者。 -
执行
secondAsync
,打印出 "Second async"。 -
firstAsync
的 Promise 解决,继续执行console.log(firstResult)
,打印出 "First result"。 -
遇到
await secondAsync()
,控制权再次交回给asyncFunction
的调用者。 -
secondAsync
的 Promise 解决,继续执行console.log(secondResult)
,打印出 "Second result"。
综上所述,async/await
的执行顺序是按照函数中的顺序执行的,每遇到 await
关键字就会暂停当前函数的执行,等待 Promise 完成后再恢复执行。