网站首页 > 教程文章 正文
async 和 await 是 ES6 引入的关键字,用于异步编程。
- async 用于声明一个函数为异步函数,异步函数的返回值会被隐式地Promise.resolve()包装。这样 asyn函数就会返回一个Promise对象,可以像其他Promise对象一样使用.then()和.catch()。
- await 只能在async函数内部使用,且只能等Promise对象的结果。遇到await,异步函数会暂停执行,等待Promise的结果,再恢复异步函数的执行并返回解析值。如果Promise变为reject状态,会抛出异常,需要通过catch捕获处理。
async和await的区别:
- async用于定义一个函数,表示其内部有异步操作。async函数返回的永远是一个Promise对象。
- await用于等待一个Promise对象的resolve,并获取resolve的值。await必须在async函数内部使用,而async函数返回的总是一个Promise对象
示例代码:
async function test() {
console.log('test start')
let value = await Promise.resolve('await value')
console.log(value)
console.log('test end')
}
console.log('1')
test()
console.log('2')
输出结果:
1
test start
2
await value
test end
执行时序图:
从执行结果和执行时序图可以看出,程序是按顺序执行的,但是在执行test函数时,await会等待Promise.resolve异步执行完成后返回结果再继续执行test函数后面的语句。
总结
async 和 await 让异步代码看起来像同步代码,大大提高了异步编程的可读性和开发体验。async 定义异步函数,await 在异步函数中等待异步操作的完成。
猜你喜欢
- 2025-05-30 ES6学习(17):彻底搞懂 async 和 await,轻松掌握异步编程!
- 2025-05-30 碎片时间学编程「07」:JavaScript 中的异步数组循环
- 2025-05-30 Promise.all() 并行处理多个异步任务
- 2025-05-30 Vue.js 中的异步组件是什么?
- 2025-05-30 Node.js全栈开发的深度实践:从异步编程到云原生架构
- 2025-05-30 JavaScript 异步编程指南 - 聊聊 Node.js 中的事件循环
- 2025-05-30 JavaScript异步编程Async/Await详解
- 2025-05-30 NODE.JS中的异步理解
- 2025-05-30 深入解析 JavaScript 中的 Promise 与 await:异步编程的利器
- 2025-05-30 一个JavaScript技巧让异步代码同步化,太强大了
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)