es6 async函数的基本用法
async函数的基本用法
async
函数返回一个 Promise 对象,可以使用then
方法添加回调函数。当函数执行的时候,一旦遇到await
就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。
下面是一个例子。
async function getStockPriceByName(name) {
const symbol = await getStockSymbol(name);
const stockPrice = await getStockPrice(symbol);
return stockPrice;
}
getStockPriceByName('goog').then(function (result) {
console.log(result);
});
上面代码是一个获取股票报价的函数,函数前面的async
关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个Promise
对象。
下面是另一个例子,指定多少毫秒后输出一个值。
function timeout(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function asyncPrint(value, ms) {
await timeout(ms);
console.log(value);
}
asyncPrint('hello world', 50);
上面代码指定 50 毫秒以后,输出hello world
。
由于async
函数返回的是 Promise 对象,可以作为await
命令的参数。所以,上面的例子也可以写成下面的形式。
async function timeout(ms) {
await new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function asyncPrint(value, ms) {
await timeout(ms);
console.log(value);
}
asyncPrint('hello world', 50);
ES6 async函数有多种使用形式。
// 函数声明
async function foo() {}
// 函数表达式
const foo = async function () {};
// 对象的方法
let obj = { async foo() {} };
obj.foo().then(...)
// Class 的方法
class Storage {
constructor() {
this.cachePromise = caches.open('avatars');
}
async getAvatar(name) {
const cache = await this.cachePromise;
return cache.match(`/avatars/${name}.jpg`);
}
}
const storage = new Storage();
storage.getAvatar('jake').then(…);
// 箭头函数
const foo = async () => {};
es6 async函数的基本用法相关推荐
- es6 async函数的实现原理
async函数的实现原理 async函数的实现原理,就是将 Generator函数和自动执行器,包装在一个函数里. async function fn(args) { // ... } // 等同于 ...
- es6 async函数的语法
async函数的语法 async函数的语法规则总体上比较简单,难点是错误处理机制. 返回 Promise 对象 async函数返回一个 Promise 对象. async函数内部return语句返回的 ...
- ES6 async函数(超级详细、易懂)
下面是对 ES6 async函数的整理,希望可以帮助到有需要的小伙伴~ 文章目录 async函数是什么 异步函数声明式 异步函数表达式 返回Promise对象 await表达式 await处理错误 a ...
- es6 async函数的异步迭代器
async函数的异步迭代器 <迭代器>一章说过,Iterator 接口是一种数据遍历的协议,只要调用迭代器对象的next方法,就会得到一个对象,表示当前遍历指针所在的那个位置的信息.nex ...
- es6 async函数实例:按顺序完成异步操作
async函数实例:按顺序完成异步操作 实际开发中,经常遇到一组异步操作,需要按照顺序完成.比如,依次远程读取一组 URL,然后按照读取的顺序输出结果. ES6 Promise 的写法如下. func ...
- es6 async函数与其他异步处理方法的比较
async函数与其他异步处理方法的比较 我们通过一个例子,来看 async函数与 Promise.Generator函数的比较. 假定某个 DOM 元素上面,部署了一系列的动画,前一个动画结束,才能开 ...
- 【ES6】异步操作和async函数
[ES6]异步操作和async函数 一.基本概念 二.回调函数 三.Promise 四.async函数 查看更多ES6教学文章: 参考文献 引言:ES6新增的Generato.Promise.asyn ...
- async 函数的含义和用法
一.终极解决 异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题. 从最早的回调函数,到 Promise 对象,再到 Generator 函数,每次都有 ...
- 浅谈async函数await用法
async和await相信大家应该不陌生,让异步处理变得更友好. 其实这玩意儿就是个Generator的语法糖,想深入学习得去看看Generator,不然你可能只停留在会用的阶段. 用法很简单,看代码 ...
最新文章
- core java 9 代码_Java Core 学习笔记——3.char/Unicode/代码点/代码单元
- 两年的等待,近700页干货,同系列累计销量25万+,第三版内容更扎实
- Peter Cnudde谈雅虎如何使用Hadoop、深度学习和大数据平台
- golan web扫雷
- RobotFrameWork接口报文测试-----(一)简单demo的实现
- oracle 10g rac数据库,oracle 10g rac安装报错集锦
- 关于原生AJAX和jQueryAJAX的编程
- 百度之星资格赛1003:度度熊与邪恶大魔王
- java显示字母数字组合_Java字母加数字组合比较大小
- 7个开源的TTS(文本转语音)系统
- socketpair机制
- 分布式机器学习——入门篇
- ubuntu报错:RuntimeError : unexcepted EOF, excepted 2599001 more bytes. The file might be corrupted.
- 基于支持向量机的图像分类(上篇)
- 计算机系统盘怎么扩充,Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法
- 活着就是要做有意义的事,做有意义的事就是好好活着
- APP Designer 制作简易英汉词典的回调函数书写
- 周志华机器学习(西瓜书)学习笔记(持续更新)
- 一英寸芯片大小_(整理)CCD芯片尺寸和镜头焦距计算方法.
- 辛泓睿:数字资产化,万物皆可NFT吗?
热门文章
- 微信公众平台开发(31)微信第三方登录接口
- android 仿QQ手机版
- 团队项目:过山车游戏的设想
- IB客座主编(三):西门子(中国)有限公司工业业务领域楼宇科技集团杜明轩(Christophe de Maistre)先生...
- android系统优势 研究,Android系统关注度持续保持优势
- 【mybatis系列】自定义实现拦截器插件Interceptor
- 【七夕特殊礼物】Dubbo学习之SPI实战与debug源码
- poi comment
- [C#.NET通用权限管里系统组件]对资源权限、列表型、记录级权限、数据集权限的实现参考...
- 页面加载被延迟 Firefox将禁用对DV和OV证书的OCSP检查