async/await

asyncES7的与异步操作有关的关键字,其返回一个Promise对象,await操作符用于等待一个Promise对象,它只能在异步函数async function内部使用。async/await的目的是简化使用多个promise时的同步行为,并对一组Promises执行某些操作。正如Promises类似于结构化回调,async/await更像结合了generatorspromises

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处理异常rejectedawait表达式会把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相关推荐

  1. setTimeout、setInterval、promise、async/await的顺序详解(多种情况,非常详细~)

    本文很长,列举的情况很多. 在阅读本文之前,如果您有充足的时间,请新建一个项目与本文一同实践. 每段代码都有对应的解释,但是自己动手尝试印象才会更深哦~ setInterval:表示多久执行一次,需要 ...

  2. C# async await 学习笔记2

    C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...

  3. promise 和 async await区别

     什么是Async/Await? async/await是写异步代码的新方式,以前的方法有回调函数和Promise. async/await是基于Promise实现的,它不能用于普通的回调函数. as ...

  4. angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )

    Promise 是 ES 6 Async/Await 是 ES 7 Rxjs 是一个 js 库 在使用 angular 时,你会经常看见这 3 个东西. 它们都和异步编程有关,有些情况下你会觉得用它们 ...

  5. async await:比requests 更强大

    最近公司 Python 后端项目进行重构,整个后端逻辑基本都变更为采用"异步"协程的方式实现.看着满屏幕经过 async await(协程在 Python 中的实现)修饰的代码,我 ...

  6. @async 默认线程池_.NET Web应用中为什么要使用async/await异步编程?

    布莱恩特:.NET Core开发精选文章目录,持续更新,欢迎投稿!​zhuanlan.zhihu.com 前言 1.什么是async/await? await和async是.NET Framework ...

  7. Atitit. Async await 优缺点 异步编程的原理and实现 java c# php

    Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...

  8. 8张图让你一步步看清 async/await 和 promise 的执行顺序

    2019独角兽企业重金招聘Python工程师标准>>> **摘要:**面试必问 原文:8张图帮你一步步看清 async/await 和 promise 的执行顺序 作者:ziwei3 ...

  9. 用 async/await 来处理异步

    引用出处:https://www.cnblogs.com/SamWeb/p/8417940.html 昨天看了一篇vue的教程,作者用async/ await来发送异步请求,从服务端获取数据,代码很简 ...

  10. 关于C#中async/await中的异常处理(上)

    关于C#中async/await中的异常处理(上) 参考文章: (1)关于C#中async/await中的异常处理(上) (2)https://www.cnblogs.com/sunjie9606/p ...

最新文章

  1. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建
  2. 前端开发中Cookie那些事儿
  3. 远去的高考,消逝的大一……
  4. LiveVideoStackCon深圳-编解码的三足鼎立
  5. 红外感应模块+蜂鸣器实现简易报警(转)
  6. dbf文件怎么创建_ThinkPHP6开发博客实战入门(三),创建admin后台入口
  7. 信息学奥赛一本通(1085:球弹跳高度的计算)
  8. 将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架
  9. 关于爬取网易云全部评论的一些疑问
  10. SQL Server性能常用语句
  11. 北理工网络安全导论作业:DES算法
  12. Python GUI学习感想
  13. SpringSecurity框架用法简介
  14. 删除vlan 华为s5720_华为S5720系列交换机快速配置手册常用命令 - Late Winter
  15. 第三届“传智杯”全国大学生IT技能大赛(初赛)-Java B组题解
  16. 小米air2se耳机只有一边有声音怎么办_小米耳机只有一边有声音,这问题怎么解决...
  17. 滑模控制学习笔记(六)
  18. 【转自D8】女神的QQ动了,我大喜,点开后默泪了,狠狠的吸了口烟。。。
  19. 激活函数activation总结
  20. 关于IDEA在模块scr鼠标右键没有Servlet的解决方法(多种步骤帮你解决)

热门文章

  1. StratoVirt在x86_64下的初体验
  2. 35岁前需要完成的事
  3. php7当前目录,PHP获取路径或目录或当前文件名
  4. RabbitMQ——work queue
  5. 关于snowflake算法的几个问题
  6. IDEA依赖冲突分析神器—Maven Helper
  7. binlog和redo log的区别
  8. 原生js实现简洁的返回顶部组件
  9. jdk1.8之lambda表达式
  10. Delphi XE的RTTI增强,动态Hook某些内部事件