您现在的位置是:亿华云 > IT科技类资讯
ES6新增语法—Async...Await详解
亿华云2025-10-03 02:02:37【IT科技类资讯】2人已围观
简介什么是asyncasync的意思是“异步”,顾名思义就是有关异步操作的关键字,async 是 ES7 才有的,与我们之前说的Promise、Generator有很大的关联。使用语法:asyncfunc
什么是新增详解async
async的意思是“异步”,顾名思义就是语法有关异步操作的关键字,async 是新增详解 ES7 才有的,与我们之前说的语法Promise、Generator有很大的新增详解关联。
使用语法:
async function name(param){ param //传递给函数的语法参数名称 statements //函数体 } name().then(function(res){ res//异步操作返回的结果 })async 函数返回一个Promise对象,可以使用then方法添加回调函数。新增详解具体实例如下:
async function show(){ return { a:12,语法b:15} } console.log(show())//Promise { <fulfilled>: { …}} show().then(res=>{ console.log("res",res) })什么是await
await关键字存在async函数表达式中,用于等待Promise对象,新增详解暂停执行,语法等到异步操作完成后,新增详解恢复async函数的语法执行并返回解析值。云服务器如果把await放在asnyc函数体外,新增详解会报语法错误。语法
使用语法:
asnyc function name(){ returnValue = await expression; }expression 是新增详解一个Promise对象或一个需要等待的值,针对所跟不同表达式,有两种处理方式:
对于Promise对象,await会阻塞主函数执行,等待Promise对象执行resolve之后,resolve返回值作为await表达式运算结果,然后继续向下执行。
对于非Promise对象,可以是字符串、布尔值、数值以及普通函数等。await直接返回对应的值,而不是等待其执行结果。
await等待Promise对象实例如下:
async function test1(){ console.log("执行") return new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("延迟3秒之后返回成功") resolve({ a:1}) },3000) }) } async function test2(){ let x = await test1() console.log("x",x)//{ a: "1"} return x } test2().then(function(res){ console.log("res",res)//{ a: "1"} })await 跟 普通函数 实例如下:
function test3(){ console.log("普通函数") } async function test4(){ await test3() console.log("直接执行") } test4()捕获异常
上述的await后跟Promise对象,我们知道Promise有两种状态,resolved() 和 rejected() ,香港云服务器如果Promise对象变为rejected,会如何处理?
function testAwait(){ return Promise.reject("error"); } async function test1(){ await testAwait(); console.log("test1");//没有打印 } test1().then(v=>{ console.log(v); }).catch(e=>{ console.log(e);//"error" })从上实例执行结果发现,返回的reject状态被外层的catch捕获,然后终止了后面的执行。但是在有些情况下,即使出错了我们还是继续执行,而不是中断,此时我们借助try...catch捕获内部异常。
function test1(){ return new Promise((resolve,reject)=>{ reject("error") }) } async function test2(){ try{ await test1() }catch(e){ console.log("报错",e) } } test2().then((res)=>{ console.log("执行成功",res) // 打印:执行成功undefined }).catch(err=>{ console.log(err,err) })Generator与async对比:
async利用await阻塞原理,代替了Generator的 yield 。 async 相比Generator 不需要 run 流程函数,完美地实现了异步流程。从 Promise 到 Generator , 再到 async ,对于异步编程的解决方案越来越完美,这就是ES6不断发展的魅力所在。
亿华云很赞哦!(5748)
上一篇: 2023年优秀数据中心和技术预测
下一篇: 空间和电力:真正限制数据中心容量的因素
相关文章
- 戴尔科技VxRail助力企业推动可持续IT发展
- 记住那句话,域名向来不属于任何人,谁先买就归谁,购买期过后,域名又不再属于任何人。
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- 只要我们做的是从目前的市场情况选择域名,从简单易记,从个性特征上,我们就可以找到一个好域名进行注册。域名注册进行域名记录和解析以及绑定网站后,客户可以通过URL登录您的网站。
- 八年了,戴尔科技峰会与您一起见证数字化历程
- 以上的就是为大家介绍的关于域名的详解域名注册:域名注册0
- 如果你的潜在终端必须是这个米(域名),那么潜在终端并不多,也没有硬通货,那么你的域名应该在终端有兴趣购买时出售。否则,你可能得自己留着吃。
- 注册域名要了解几大点?新手有什么方式注册域名?
- 数据中心基础设施管理(DCIM)主要趋势
- a、变更前的公司证件扫描件(代码证或者营业执照)及联系人身份证复印件、变更后的公司证件扫描件(代码证或者营业执照)及新的联系人身份证复印件;身份证复印件需本人签名,公司证件复印件需加盖公章。
热门文章
站长推荐
浪潮陈彦灵:以开放计算驱动技术创新,构建可持续发展的数据中心
用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
为啥修改dns服务器?dns服务器与域名有何联系?
并非一个好米任何人都会给你一个好的价格。那你该如何用以有的好米卖出最理想的价格呢?
2023年数据中心12大趋势
解析之后一般在十分钟内生效,如果没有生效可以联系域名服务商进行沟通。
在更换域名后,并不是就万事大吉了,我们需要将旧域名做301重定向到新域名上,转移旧域名的权重到新域名上。
旧域名的外链是否会对新建站点产生影响?