async函数的基本用法

async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

下面是一个例子。

  1. async function getStockPriceByName(name) {
  2. const symbol = await getStockSymbol(name);
  3. const stockPrice = await getStockPrice(symbol);
  4. return stockPrice;
  5. }
  6. getStockPriceByName('goog').then(function (result) {
  7. console.log(result);
  8. });

上面代码是一个获取股票报价的函数,函数前面的async关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个Promise对象。

下面是另一个例子,指定多少毫秒后输出一个值。

  1. function timeout(ms) {
  2. return new Promise((resolve) => {
  3. setTimeout(resolve, ms);
  4. });
  5. }
  6. async function asyncPrint(value, ms) {
  7. await timeout(ms);
  8. console.log(value);
  9. }
  10. asyncPrint('hello world', 50);

上面代码指定 50 毫秒以后,输出hello world

由于async函数返回的是 Promise 对象,可以作为await命令的参数。所以,上面的例子也可以写成下面的形式。

  1. async function timeout(ms) {
  2. await new Promise((resolve) => {
  3. setTimeout(resolve, ms);
  4. });
  5. }
  6. async function asyncPrint(value, ms) {
  7. await timeout(ms);
  8. console.log(value);
  9. }
  10. asyncPrint('hello world', 50);

ES6 async函数有多种使用形式。

  1. // 函数声明
  2. async function foo() {}
  3. // 函数表达式
  4. const foo = async function () {};
  5. // 对象的方法
  6. let obj = { async foo() {} };
  7. obj.foo().then(...)
  8. // Class 的方法
  9. class Storage {
  10. constructor() {
  11. this.cachePromise = caches.open('avatars');
  12. }
  13. async getAvatar(name) {
  14. const cache = await this.cachePromise;
  15. return cache.match(`/avatars/${name}.jpg`);
  16. }
  17. }
  18. const storage = new Storage();
  19. storage.getAvatar('jake').then(…);
  20. // 箭头函数
  21. const foo = async () => {};

es6 async函数的基本用法相关推荐

  1. es6 async函数的实现原理

    async函数的实现原理 async函数的实现原理,就是将 Generator函数和自动执行器,包装在一个函数里. async function fn(args) { // ... } // 等同于 ...

  2. es6 async函数的语法

    async函数的语法 async函数的语法规则总体上比较简单,难点是错误处理机制. 返回 Promise 对象 async函数返回一个 Promise 对象. async函数内部return语句返回的 ...

  3. ES6 async函数(超级详细、易懂)

    下面是对 ES6 async函数的整理,希望可以帮助到有需要的小伙伴~ 文章目录 async函数是什么 异步函数声明式 异步函数表达式 返回Promise对象 await表达式 await处理错误 a ...

  4. es6 async函数的异步迭代器

    async函数的异步迭代器 <迭代器>一章说过,Iterator 接口是一种数据遍历的协议,只要调用迭代器对象的next方法,就会得到一个对象,表示当前遍历指针所在的那个位置的信息.nex ...

  5. es6 async函数实例:按顺序完成异步操作

    async函数实例:按顺序完成异步操作 实际开发中,经常遇到一组异步操作,需要按照顺序完成.比如,依次远程读取一组 URL,然后按照读取的顺序输出结果. ES6 Promise 的写法如下. func ...

  6. es6 async函数与其他异步处理方法的比较

    async函数与其他异步处理方法的比较 我们通过一个例子,来看 async函数与 Promise.Generator函数的比较. 假定某个 DOM 元素上面,部署了一系列的动画,前一个动画结束,才能开 ...

  7. 【ES6】异步操作和async函数

    [ES6]异步操作和async函数 一.基本概念 二.回调函数 三.Promise 四.async函数 查看更多ES6教学文章: 参考文献 引言:ES6新增的Generato.Promise.asyn ...

  8. async 函数的含义和用法

    一.终极解决 异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题. 从最早的回调函数,到 Promise 对象,再到 Generator 函数,每次都有 ...

  9. 浅谈async函数await用法

    async和await相信大家应该不陌生,让异步处理变得更友好. 其实这玩意儿就是个Generator的语法糖,想深入学习得去看看Generator,不然你可能只停留在会用的阶段. 用法很简单,看代码 ...

最新文章

  1. core java 9 代码_Java Core 学习笔记——3.char/Unicode/代码点/代码单元
  2. 两年的等待,近700页干货,同系列累计销量25万+,第三版内容更扎实
  3. Peter Cnudde谈雅虎如何使用Hadoop、深度学习和大数据平台
  4. golan web扫雷
  5. RobotFrameWork接口报文测试-----(一)简单demo的实现
  6. oracle 10g rac数据库,oracle 10g rac安装报错集锦
  7. 关于原生AJAX和jQueryAJAX的编程
  8. 百度之星资格赛1003:度度熊与邪恶大魔王
  9. java显示字母数字组合_Java字母加数字组合比较大小
  10. 7个开源的TTS(文本转语音)系统
  11. socketpair机制
  12. 分布式机器学习——入门篇
  13. ubuntu报错:RuntimeError : unexcepted EOF, excepted 2599001 more bytes. The file might be corrupted.
  14. 基于支持向量机的图像分类(上篇)
  15. 计算机系统盘怎么扩充,Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法
  16. 活着就是要做有意义的事,做有意义的事就是好好活着
  17. APP Designer 制作简易英汉词典的回调函数书写
  18. 周志华机器学习(西瓜书)学习笔记(持续更新)
  19. 一英寸芯片大小_(整理)CCD芯片尺寸和镜头焦距计算方法.
  20. 辛泓睿:数字资产化,万物皆可NFT吗?

热门文章

  1. 微信公众平台开发(31)微信第三方登录接口
  2. android 仿QQ手机版
  3. 团队项目:过山车游戏的设想
  4. IB客座主编(三):西门子(中国)有限公司工业业务领域楼宇科技集团杜明轩(Christophe de Maistre)先生...
  5. android系统优势 研究,Android系统关注度持续保持优势
  6. 【mybatis系列】自定义实现拦截器插件Interceptor
  7. 【七夕特殊礼物】Dubbo学习之SPI实战与debug源码
  8. poi comment
  9. [C#.NET通用权限管里系统组件]对资源权限、列表型、记录级权限、数据集权限的实现参考...
  10. 页面加载被延迟 Firefox将禁用对DV和OV证书的OCSP检查