• async function 声明用于定义一个返回 AsyncFunction 对象的异步函数
  • await  操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用

语法:

[return_value] = await expression;

* 属于ES7语法,目前不被浏览器支持

使用注意:

1. await 必须在 async 声明的函数体中才能使用

2. await 后面只能是Promise对象,如果等待的不是 Promise 对象,则返回该值本身

3. await 等待Promise对象必须 resolve,否则函数体将不会继续执行

4. async 仅仅影响当前函数体

示例:

异步获取用户信息

function getUserInfo(){
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('user information ...')
},3000);
})
} async function init(){
console.log('start of init')
var info = await getUserInfo()
console.log(info)
console.log('end of init')
} init()
console.log('end of script')

执行结果:

执行async声明函数时,如果函数体内有await操作符的异步函数时:

1. 整个脚本会跳过异步操作继续执行后面的代码

2. async函数体内 await操作符后续的代码会等待 await标记的异步操作完成再执行

Javascript 使用 async 声明符和 await 操作符进行异步操作的更多相关文章

  1. JavaScript中async和await的使用以及队列问题

    宏任务和微任务的队列入门知识,可以参考之前的文章: JavaScript的事件循环机制 宏任务和微任务在前端面试中,被经常提及到,包括口头和笔试题 async && await概念 a ...

  2. [转] Understanding JavaScript’s async await

    PS:Promise的用处是异步调用,这个对象使用的时候,call then函数,传一个处理函数进去,处理异步调用后的结果 Promise<Action>这样的对象呢,异步调用后的结果是一 ...

  3. JavaScript 的 Async\/Await 完胜 Promise 的六

    参考:http://www.10tiao.com/html/558/201705/2650964601/1.html Node 现在从版本 7.6 开始就支持 async/await 了. 简介: A ...

  4. 【转】6 Reasons Why JavaScript’s Async/Await Blows Promises Away (Tutorial)

    原文:https://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec105 ...

  5. [转] 理解 JavaScript 的 async/await

    [From] https://segmentfault.com/a/1190000007535316      边城 2016年11月19日发布 随着 Node 7 的发布,越来越多的人开始研究据说是 ...

  6. 【前端_js】理解 JavaScript 的 async/await

    async 和 await 在干什么 任意一个名称都是有意义的,先从字面意思来理解.async 是“异步”的简写,而 await 可以认为是 async wait 的简写.所以应该很好理解 async ...

  7. 理解 JavaScript 的 async/await

    随着 Node 7 的发布,越来越多的人开始研究据说是异步编程终级解决方案的 async/await.我第一次看到这组关键字并不是在 JavaScript 语言里,而是在 c# 5.0 的语法中.C# ...

  8. 深入理解理解 JavaScript 的 async/await

    原文地址:https://segmentfault.com/a/1190000007535316,首先感谢原文作者对该知识的总结与分享.本文是在自己理解的基础上略作修改所写,主要为了加深对该知识点的理 ...

  9. JavaScript 基础 (变量声明, 数据类型, 控制语句)

    创建: 2017/09/16 更新: 2017/09/24 更改标题 [JavaScript 概要]-> [JavaScript 基础] 完成: 2017/09/25 更新: 2017/10/0 ...

随机推荐

  1. 学习笔记DL006:特征分解,奇异值分解

    特征分解. 整数分解质因素. 特征分解(eigendecomposition),使用最广,矩阵分解一组特征向量.特征值.方阵

  2. hibernate二级缓存demo2

    @Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...

  3. MySQL出现too many connections(1040)错误解决方法

    https://www.cnblogs.com/2881064178dinfeng/p/6938112.html 其实MySQL默认的最大连接数为100,可能在大访问量的时候造成了连接不上数据库.解决 ...

  4. Windows和Office激活工具Kmsauto Net

    对于微软操作系统和OFFICE的激活,以前笔者用过 ”HEU_KMS_Activator_v11.2.0” ,不过这个工具速度相对比较慢.今天给大家推荐一个新的激活工具:KmsautoNet . 很简 ...

  5. 关于library cache lock和row cache lock产生的常见原因

    这两个等待事件其实很少出现在top5列表中,一般都没什么印象,在此整理记录以便以后查阅. 常见的library cache lock产生的原因在<高级OWI与Oracle性能调查>这本书和 ...

  6. api签名认证方案

    微信签名算法 token (自己后台配置) nonce:随机数 signature:签名 echostr:返回字符串 https://mp.weixin.qq.com/wiki?t=resource/ ...

  7. webRTC中音频相关的netEQ(三):存取包和延时计算

    上篇(webRTC中音频相关的netEQ(二):数据结构)讲了netEQ里主要的数据结构,为理解netEQ的机制打好了基础.本篇主要讲MCU中从网络上收到的RTP包是怎么放进packet buffer ...

  8. 新ubuntu系统装软件

    新装的ubuntu系统安装软件: 1.ifconfig #sudo apt-get install net-tools 2.vim #sudo apt-get install vim 3.telnet ...

  9. 正则表达式与Python中re模块的使用

    正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...

  10. 知识点:Mysql 索引原理完全手册(2)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 八. 联合索引与覆盖索引 ...