什么是Javascript的异步函数与await?

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

什么是javascript的异步函数与await?

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在React-Leaflet中构建分层设色地图:GeoJSON数据加载与渲染实战
上一篇 2025年12月21日 14:03:16
D3.js 动态数据工具提示实现指南:解决事件处理函数中的数据绑定问题
下一篇 2025年12月21日 14:03:22

相关推荐

发表回复

登录后才能评论
关注微信