讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

Laper
Laper

剧本策划到成片协作

立刻MV
立刻MV

低成本歌曲 MV、视频生成

updream

一键生成高质量推广成片

什么是javascript的异步编程_如何使用async/await简化代码?

千萱同学_8318

千萱同学_8318

发布时间:2026-01-09 18:57:09

|

695人浏览过

|

来源于php中文网

原创

async/await 是 Promise 的语法糖,async 函数必返回 Promise(如 return 42 → Promise.resolve(42)),await 仅在 async 函数内有效,会暂停执行并等待 Promise resolve,错误需用 try/catch 捕获,并发请求应使用 Promise.all 而非连续 await。

什么是javascript的异步编程_如何使用async/await简化代码?

async/await 不是新机制,而是 Promise 的语法糖;它不能消除异步本质,但能避免回调嵌套和显式 .then() 链。

为什么 async 函数返回的是 Promise?

因为 JavaScript 异步执行模型没变——async 函数内部仍依赖事件循环调度。哪怕函数体里只写 return 42,也会被自动包装成 Promise.resolve(42)。

  • 直接 return 基本类型 → 等价于 Promise.resolve(value)
  • 抛出错误 → 等价于 Promise.reject(error)
  • 返回已存在的 Promise → 不会再包一层,原样透传
async function f() {
  return 'hello';
}
console.log(f()); // Promise { 'hello' }

await 只能在 async 函数里用,且只能等 Promise

await 本质是暂停当前 async 函数的执行(不阻塞主线程),等右侧表达式 resolve 后继续。它不是万能等待器——遇到非 Promise 值会立即返回,不会“等”。

Expanso yaml-to-json
Expanso yaml-to-json

使用 Expanso Edge 管道将 YAML 输入转换为 JSON 格式。

下载
  • 如果 await 123,结果就是 123,无延迟
  • 如果 await fetch('/api'),才真正等待网络响应完成
  • 在顶层作用域或普通函数里写 await → 报错 SyntaxError: await is only valid in async function
async function getData() {
  const res = await fetch('/api');
  const data = await res.json();
  return data;
}

错误处理必须用 try/catch,不能靠 .catch()

await 后的 Promise reject 会以异常形式抛出,跳过后续语句。想捕获就得用 try/catch,否则会冒泡到最近的 async 上下文或变成未处理拒绝(unhandledrejection)。

立即学习“Java免费学习笔记(深入)”;

  • .catch() 在 await 表达式右边无效:比如 await promise.catch(...) 是错的逻辑
  • 多个 await 要分别包裹,或统一用一个 try/catch 包住整段逻辑
  • 忘记 try/catch 是线上静默失败最常见原因之一
async function safeFetch() {
  try {
    const res = await fetch('/api');
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return await res.json();
  } catch (err) {
    console.error('Fetch failed:', err);
    return null;
  }
}

真正容易被忽略的点是:await 并不“串行化”所有操作——如果你连续 await 三个独立请求,它们仍是顺序等待;要并发就该用 Promise.all([a(), b(), c()]),再 await 这个组合 Promise。混用 await 和 Promise 并发模式,是性能掉坑最多的地方。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1069

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3440

2023.10.25

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

4778

2023.08.10

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

3620

2023.08.04

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

594

2023.10.07

promise的用法
promise的用法

“promise” 是一种用于处理异步操作的编程概念,它可以用来表示一个异步操作的最终结果。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise的用法主要包括构造函数、实例方法(then、catch、finally)和状态转换。

4860

2023.10.12

html文本框类型介绍
html文本框类型介绍

html文本框类型有单行文本框、密码文本框、数字文本框、日期文本框、时间文本框、文件上传文本框、多行文本框等等。详细介绍:1、单行文本框是最常见的文本框类型,用于接受单行文本输入,用户可以在文本框中输入任意文本,例如用户名、密码、电子邮件地址等;2、密码文本框用于接受密码输入,用户在输入密码时,文本框中的内容会被隐藏,以保护用户的隐私;3、数字文本框等等。

4723

2023.10.12

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

20

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn