async/await
async/await
async
是ES7
的与异步操作有关的关键字,其返回一个Promise
对象,await
操作符用于等待一个Promise
对象,它只能在异步函数async function
内部使用。async/await
的目的是简化使用多个promise
时的同步行为,并对一组Promises
执行某些操作。正如Promises
类似于结构化回调,async/await
更像结合了generators
和promises
。
async
语法
async function name([param[, param[, ... param]]]) { statements }
name
: 函数名称。param
: 要传递给函数的参数的名称。statements
: 函数体语句。
async
函数返回一个Promise
对象,可以使用then
方法添加回调函数,返回的Promise
对象会运行执行resolve
异步函数的返回结果,如果抛出异常则运行拒绝reject
。
实例
async function asyncPromise(v){return v;
}asyncPromise(1).then((v) => {console.log(v);
}).catch((e) => {console.log(e);
})
await
async
一般是配合await
指令使用的,该指令会暂停异步函数的执行,并等待Promise
执行,然后继续执行异步函数,并返回结果。若Promise
处理异常rejected
,await
表达式会把Promise
的异常原因抛出。另外,如果await
操作符后的表达式的值不是一个Promise
,则返回该值本身。
实例
function promise(){return new Promise(function(resolve,reject){var rand = Math.random() * 2;setTimeout(function(){resolve(`solve ${rand}`);},1000)})
}(async function asyncPromise(){var result = await promise();console.log(result);
})();// 捕捉异常
function promise(){return new Promise(function(resolve,reject){throw new Error(`reject`);})
}(async function asyncPromise(){var result = await promise();console.log(result);
})().catch((e) => {console.log(e);
});// 非promise对象直接返回该值本身
function notPromise(){return 1;
}(async function asyncPromise(){var result = await notPromise();console.log(result);
})();
每日一题
https://github.com/WindrunnerMax/EveryDay
async/await相关推荐
- setTimeout、setInterval、promise、async/await的顺序详解(多种情况,非常详细~)
本文很长,列举的情况很多. 在阅读本文之前,如果您有充足的时间,请新建一个项目与本文一同实践. 每段代码都有对应的解释,但是自己动手尝试印象才会更深哦~ setInterval:表示多久执行一次,需要 ...
- C# async await 学习笔记2
C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...
- promise 和 async await区别
什么是Async/Await? async/await是写异步代码的新方式,以前的方法有回调函数和Promise. async/await是基于Promise实现的,它不能用于普通的回调函数. as ...
- angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )
Promise 是 ES 6 Async/Await 是 ES 7 Rxjs 是一个 js 库 在使用 angular 时,你会经常看见这 3 个东西. 它们都和异步编程有关,有些情况下你会觉得用它们 ...
- async await:比requests 更强大
最近公司 Python 后端项目进行重构,整个后端逻辑基本都变更为采用"异步"协程的方式实现.看着满屏幕经过 async await(协程在 Python 中的实现)修饰的代码,我 ...
- @async 默认线程池_.NET Web应用中为什么要使用async/await异步编程?
布莱恩特:.NET Core开发精选文章目录,持续更新,欢迎投稿!zhuanlan.zhihu.com 前言 1.什么是async/await? await和async是.NET Framework ...
- Atitit. Async await 优缺点 异步编程的原理and实现 java c# php
Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...
- 8张图让你一步步看清 async/await 和 promise 的执行顺序
2019独角兽企业重金招聘Python工程师标准>>> **摘要:**面试必问 原文:8张图帮你一步步看清 async/await 和 promise 的执行顺序 作者:ziwei3 ...
- 用 async/await 来处理异步
引用出处:https://www.cnblogs.com/SamWeb/p/8417940.html 昨天看了一篇vue的教程,作者用async/ await来发送异步请求,从服务端获取数据,代码很简 ...
- 关于C#中async/await中的异常处理(上)
关于C#中async/await中的异常处理(上) 参考文章: (1)关于C#中async/await中的异常处理(上) (2)https://www.cnblogs.com/sunjie9606/p ...
最新文章
- 2021年大数据ZooKeeper(二):ZooKeeper集群搭建
- 前端开发中Cookie那些事儿
- 远去的高考,消逝的大一……
- LiveVideoStackCon深圳-编解码的三足鼎立
- 红外感应模块+蜂鸣器实现简易报警(转)
- dbf文件怎么创建_ThinkPHP6开发博客实战入门(三),创建admin后台入口
- 信息学奥赛一本通(1085:球弹跳高度的计算)
- 将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架
- 关于爬取网易云全部评论的一些疑问
- SQL Server性能常用语句
- 北理工网络安全导论作业:DES算法
- Python GUI学习感想
- SpringSecurity框架用法简介
- 删除vlan 华为s5720_华为S5720系列交换机快速配置手册常用命令 - Late Winter
- 第三届“传智杯”全国大学生IT技能大赛(初赛)-Java B组题解
- 小米air2se耳机只有一边有声音怎么办_小米耳机只有一边有声音,这问题怎么解决...
- 滑模控制学习笔记(六)
- 【转自D8】女神的QQ动了,我大喜,点开后默泪了,狠狠的吸了口烟。。。
- 激活函数activation总结
- 关于IDEA在模块scr鼠标右键没有Servlet的解决方法(多种步骤帮你解决)