async函数声明异步操作并自动返回Promise,支持await暂停执行等待Promise完成;返回值被自动包装为Promise,抛错则自动reject;await仅限async函数内使用,需try/catch处理错误。

在 JavaScript 中,async 关键字用于声明一个函数为异步函数,它会自动将函数的返回值包装成 Promise,并允许在函数内部使用 await 暂停执行、等待 Promise 完成。
async 函数的基本写法
只需在 function 关键字前加 async,或在箭头函数前加 async:
-
普通函数:
async function fetchData() { ... } -
箭头函数:
const fetchData = async () => { ... }
async 函数的返回值总是 Promise
即使你 return 一个普通值(比如字符串或数字),async 函数也会自动把它 resolve 成 Promise:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
async function sayHi() { return "Hello"; }
等价于function sayHi() { return Promise.resolve("Hello"); } - 如果函数中抛出错误,会自动 reject 对应的 Promise,可被 catch 捕获
在 async 函数中使用 await 等待异步操作
await 只能在 async 函数内部使用,它会让 JS 暂停当前函数执行(不阻塞主线程),直到右侧的 Promise settled(fulfilled 或 rejected):
立即学习“Java免费学习笔记(深入)”;
const data = await fetch("/api/user").then(r => r.json());- await 后面可以是 Promise,也可以是任意值(非 Promise 会被自动转为 resolved Promise)
- 建议用 try/catch 包裹 await 表达式来处理可能的错误
常见误区提醒
- 不能在顶层作用域直接写 await(ES2022 起支持顶层 await,但需模块环境且非所有环境默认启用)
- async 函数本身不“让代码变快”,只是提供更清晰的异步流程控制方式
- await 不会阻塞整个程序,只暂停当前 async 函数的执行,其他代码仍可运行

















