网站首页 > 博客文章 正文
async和await是用来处理异步的。即你需要异步像同步一样执行,需要异步返回结果之后,再往下依据结果继续执行。
async 是“异步”的简写,而 await 可以认为是 async wait 的简写。
async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
async function testAsync() {
return "hello async";
}
const result = testAsync();
console.log(result);
打印输出的是一个Promise 对象,async 函数会返回一个 Promise 对象。
在最外层不能用 await 获取其返回值的情况下,使用 then() 链来处理这个 Promise 对象。
当 async 函数没有返回值时,返回 Promise.resolve(undefined)
await
await只能放在async函数内部使用
await 用于一个异步操作之前,表示要“等待”这个异步操作的返回值。
await 也可以用于一个同步的值。
如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
如果它等到的是一个 Promise 对象,await 就会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。
同步代码
const a = await 'hello world'
// 相当于
const a = await Promise.resolve('hello world');
// 所以直接写同步代码即可,不需要await关键字
const a = 'hello world';
异步代码
// 2s 之后返回双倍的值
function doubleAfter2seconds(num) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2 * num)
}, 2000);
})
}
async function testResult () {
let result = await doubleAfter2seconds(30);
console.log(result);
}
testResult();
// 2s 之后,输出了60.
- 上一篇: js-ES6 完全使用手册
- 下一篇: 使用 Promise 封装 FileReader
猜你喜欢
- 2025-01-21 JavaScript引擎底层的工作原理
- 2025-01-21 java高级用法之:JNA中的回调
- 2025-01-21 Firefox 42中文版发布 密码管理器改进
- 2025-01-21 vue的两种服务器端渲染方案
- 2025-01-21 JavaScript 神奇语法糖:让你的代码更简洁高效掌握这些简写技巧
- 2025-01-21 JavaScript 基础入门
- 2025-01-21 JavaScript生成器函数:掌握异步编程的强大工具
- 2025-01-21 2021 年 Node.js 开发人员学习路线图
- 2025-01-21 简单的TS入门
- 2025-01-21 Deno 运行时入门教程:Node.js 的替代品
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 358℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)