当前位置:网站首页>async和await的理解和用法
async和await的理解和用法
2022-08-11 01:45:00 【PENG越】
async和await是ES7提出的基于Promise的解决异步的最终方案
异步:
异步编程可以使得我们在执行一个长时间任务时,程序不需要进行等待,直接执行后面的代码,
直到任务完成后,再以回调函数通知,这种模式适用于IO密集的,文件读取、网络访问、数据库查询等
async
async是加在函数前的修饰符,被async定义的函数会返回一个Promise对象的resolve的值,可以直接对async函数返回进行then操作,返回值就是then方法传入的函数
await
await也是一个修饰符,只能放在async定义的函数中,搭配使用,否则报错。await可以理解为等待 await修饰的如果是一个Promise对象,可以获取Promise中返回的内容,也就是resolve或reject。取到值后代码才会继续执行 如果修饰的不是Promise对象,则会把非promise对象当作await表达式的结果 await阻塞方式并非阻塞同步代码所在的主线程,await是阻塞的当前异步函数的异步线程
PS:如果函数不返回任何东西,那么async函数基本没有意义。
async和await举例用法
function getSomeThing1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('获取成功1')
}, 3000)
})
}
function getSomeThing2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('获取成功2')
}, 2000)
})
}
async function test() {
let a = await getSomeThing1();
let b = await getSomeThing2();
console.log(a)
console.log(b)
}
test(); // 3秒后输出:获取成功
主要是用于在一个函数内去用await修饰调用的函数,使得await后的代码都会对await修饰的对象进行等待,如果又多个await修饰的方法,则会等待进行执行。实现阻塞异步函数的异步线程
边栏推荐
- 【websocket】
- HCIP-R&S By Wakin自用笔记(3)OSPF之引入外部路由、Forwarding-Address、汇总、特殊区域
- 报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标
- 软件测试面试题:验收测试包括哪三种类型?
- 软件测试面试题:什么是Negative测试?
- [Server data recovery] Data recovery case of lvm information and VXFS file system corruption caused by raid5 crash
- Pytorch/TensorFlow/Numpy常用函数汇总
- 【iframe父页面调用子页面的方法】踩坑:获取元素的时候需要用 `[x]`是关键,不能用`.eq(x)`否则获取不到。
- OptiFDTD应用:用于光纤入波导耦合的硅纳米锥仿真
- Qt 中的隐式共享
猜你喜欢
Is container technology really the savior of environmental management?
The statistical data analysis, interview manual"
OptiFDTD应用:用于光纤入波导耦合的硅纳米锥仿真
两日总结十一
两日总结十
[The method of calling the child page from the parent page of the iframe] Stepping on the pit: It is the key to use `[x]` when getting elements. You cannot use `.eq(x)`, otherwise it will not be obtai
C # - delegate detailed usage
测试3年,开口就要25k?面试完最多给15k...
Matlab矩阵(数组)元素过滤常见方法详解
两日总结九
随机推荐
软件测试面试题:在频繁的版本发布中,如何回归测试?
Deep Learning【第二章】
ora-00001违反唯一约束
进程间通信方式(2)有名管道
请讲一讲JS中的 for...in 与 for...of (下)
如何防止离职员工把企业文件拷贝带走?法律+技术,4步走
Still using Xshell?You are out, recommend a more modern terminal connection tool, easy to use!
软件测试面试题:对 RUP,CMM,CMMI,XP,PSP,TSP 的认识?
14.cuBLAS开发指南中文版--cuBLAS中的Level-1函数nrm2()和rot()
生信实验记录(part3)--scipy.spatial.distance_matrix
软件测试面试题:性能测试工作?
88Q2110 access C45 phy address through C22
Section 4-6 of the first week of the second lesson: Appreciation of medical prognosis cases + homework analysis
进程间通信方式(1)无名管道(全CSDN最用心的博主)
WinForm (5) control and its members
报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标
#yyds Dry Goods Inventory#[Yugong Series] August 2022 Go Teaching Course 008-Integer of Data Types
微信公众号后台管理
Ambari Migrates Spark2 to Other Machines (Graphic and Text Tutorial)
SyntaxError: invalid syntax