async/await 是 JavaScript 中处理异步操作的语法糖,基于 Promise 实现,让异步代码的写法更接近同步代码,极大提升了可读性和可维护性。
async 函数
- 定义:使用
async
关键字声明的函数,始终返回一个 Promise。 - 作用:将函数内部的异步操作封装在 Promise 中,简化异步流程。
async function fetchData() {
// 返回值会自动包装为 Promise
return 'Hello, World!';
}
// 等价于
function fetchData() {
return Promise.resolve('Hello, World!'); } // 调用 async 函数 fetchData().then(console.log); // 输出: Hello, World!
await
定义:只能在 async 函数内部使用,用于暂停函数执行,等待 Promise 解决(resolved)或拒绝(rejected)。
作用:以同步的方式编写异步代码,避免回调地狱。
// 模拟异步操作(2秒后返回结果)
function fetchData() {
return new Promise(resolve => {
setTimeout(() => {
resolve('数据加载完成!');
}, 2000);
});
}
// async 函数中使用 await
async function main() {
console.log('开始加载数据...');
// 暂停执行,等待 Promise 解决
const result = await fetchData();
// 2秒后才会执行这里
console.log(result); // 输出: 数据加载完成!
console.log('程序继续执行...');
}
// 调用 async 函数
main();
暂停执行:await fetchData() 会暂停 main() 函数的执行,直到 fetchData() 返回的 Promise 被解决(resolve)。
同步写法:虽然 fetchData() 是异步的,但通过 await,代码看起来像同步执行。
结果获取:await 会直接返回 Promise 解决的值(resolve() 的参数)。