async
函数是 ECMAScript 2017 引入的一种异步编程的语法糖,它使得异步代码更加清晰、易读和易写。通过在函数前面加上 async
关键字,函数将返回一个 Promise
对象,而函数内部的异步操作可以使用 await
关键字来等待其完成。
以下是 async
函数的基本结构:
javascript
async function myAsyncFunction() {
// 异步操作
// 使用 await 等待异步操作完成
// 返回一个 Promise 对象
return result; // 结果将被包装成一个已解决的 Promise 对象
}
await
关键字只能在 async
函数中使用,它用于等待一个返回 Promise
对象的表达式完成。当 await
后面的表达式成功完成时,async
函数会继续执行;如果表达式返回的是一个被拒绝的 Promise
对象,async
函数将抛出一个错误。
以下是一个简单的示例:
javascript
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('Resolved after 2 seconds');
}, 2000);
});
}
async function asyncExample() {
console.log('Start');
try {
const result = await resolveAfter2Seconds();
console.log(result);
} catch (error) {
console.error('Error:', error);
}
console.log('End');
}
asyncExample();
在上述例子中,asyncExample
函数中的 await resolveAfter2Seconds()
将会等待 resolveAfter2Seconds
函数返回的 Promise
对象完成。由于使用了 await
,整个函数变得像同步代码一样易于理解。
async
函数的错误处理通常使用 try...catch
语句,以便捕获异步操作中的错误。需要注意的是,async
函数总是返回一个 Promise
对象,无论其内部是显式地使用 return
返回值,还是隐式地返回。