网站首页 > 博客文章 正文
1、async/await场景
用同步的思维来解决异步问题的方案,当前端接口调用需要等到接口返回值以后渲染页面时;
2、基本理解
- async 函数返回的是一个promise 对象,如果要获取到promise 返回值,我们应该用then 方法;
async function timeout() {
return 'hello world'
}
timeout().then(result => {
console.log(result);
})
console.log('虽然在后面,但是我先执行');
- 如果async 函数中有返回一个值 ,当调用该函数时,内部会调用Promise.resolve() 方法把它转化成一个promise 对象作为返回,但如果timeout 函数内部抛出错误呢? 那么就会调用Promise.reject() 返回一个promise 对象。
async function timeout(flag) {
if (flag) {
return 'hello world'
} else {
throw 'my god, failure'
}
}
console.log(timeout(true)) // 调用Promise.resolve() 返回promise 对象。
console.log(timeout(false)); // 调用Promise.reject() 返回promise 对象。
函数内部抛出错误, promise 对象有一个catch 方法进行捕获
timeout(false).catch(err => {
console.log(err)
})
- 注意await 关键字只能放到async 函数里面
async function testResult() {
let result = await doubleAfter2seconds(30);
console.log(result);
}
await 表示等一下,代码就暂停到这里,不再向下执行了,它等什么呢?等后面的promise对象执行完毕,然后拿到promise resolve 的值并进行返回,返回值拿到之后,它继续向下执行。
这时你看到了then 的链式写法,有一点回调地域的感觉。
- 上一篇: ES6、ES7、ES8、ES9、ES10常用语法总汇
- 下一篇: ES6新特性面试题及答案
猜你喜欢
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)