async/await 是基于 Promise 的语法糖,使异步代码更易读、错误处理更直观;async 函数必返回 Promise,await 只能在 async 函数内使用,用于等待 Promise 完成并自动解包,需用 try/catch 捕获异常。

JavaScript 的异步函数(async function)和 await 是处理异步操作的现代语法糖,它们让原本基于回调或 Promise 链的代码变得更像同步写法,可读性更强、错误处理更直观。
异步函数的本质是返回 Promise 的普通函数
用 async 关键字声明的函数,无论内部是否含异步操作,都会自动返回一个 Promise。如果函数正常返回值,这个值会被包装成 resolved 状态的 Promise;如果抛出错误,则返回 rejected 状态的 Promise。
例如:
async function getValue() {
return 42;
}
getValue().then(console.log); // 输出 42
await 只能在 async 函数内使用,用于等待 Promise 完成
await 会暂停当前 async 函数的执行,直到右侧的 Promise 被 resolve 或 reject。它不是阻塞线程,而是让出执行权,等结果就绪后继续运行后续代码。
立即学习“Java免费学习笔记(深入)”;
注意点:
不能在顶层作用域或普通函数中直接用 await await 后面不一定是 Promise:如果不是,会自动转为已 resolve 的 Promise 如果 await 的 Promise 被 reject,会像 throw 错误一样中断执行,需要用 try/catch 捕获
对比传统 Promise 写法,async/await 更简洁清晰
比如顺序请求两个接口:
// Promise 链写法
fetch(‘/api/user’)
.then(res => res.json())
.then(user => fetch(`/api/posts?uid=${user.id}`))
.then(res => res.json())
.catch(err => console.error(err));
// async/await 写法
async function loadUserData() {
try {
const userRes = await fetch(‘/api/user’);
const user = await userRes.json();
const postRes = await fetch(`/api/posts?uid=${user.id}`);
const posts = await postRes.json();
return { user, posts };
} catch (err) {
console.error(‘加载失败’, err);
}
}
常见误区与注意事项
容易忽略的关键细节:
await 是逐行等待的,多个独立请求不要串着 await,否则变慢;可用 Promise.all() 并发发起 await 不等于“同步”,它只是语法上看起来像;底层仍是事件循环和微任务机制 不要滥用 async/await 包裹同步代码,增加不必要的 Promise 开销
基本上就这些。掌握 async/await 的核心,就是理解它如何简化 Promise 使用,同时不掩盖异步本质。
以上就是什么是Javascript的异步函数与await?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542272.html
微信扫一扫
支付宝扫一扫