博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1 分钟读完《10 分钟学会 JavaScript 的 Async/Await》
阅读量:6048 次
发布时间:2019-06-20

本文共 1086 字,大约阅读时间需要 3 分钟。

1 分钟读完

10 分钟学会 JavaScript 的 Async/Await

以前我们使用 callback。

后来我们使用 Promise。

现在我们使用 Async/Await。

1、什么是 Async/Await?

Async - 定义异步函数(async function someName(){...})

  • 自动把函数转换为 Promise
  • 当调用异步函数时,函数返回值会被 resolve 处理
  • 异步函数内部可以使用 await

Await - 暂停异步函数的执行 (var result = await someAsyncCall();)

  • 当使用在 Promise 前面时,await 等待 Promise 完成,并返回 Promise 的结果
  • await 只能和 Promise 一起使用,不能和 callback 一起使用
  • await 只能用在 async 函数中

2、Async/Await 是否会取代 Promise

不会。

  • Async/Await 底层依然使用了 Promise。
  • 多个异步函数同时执行时,需要借助 Promise.all
async function getABC() {  let A = await getValueA(); // getValueA 花费 2 秒  let B = await getValueB(); // getValueA 花费 4 秒  let C = await getValueC(); // getValueA 花费 3 秒  return A*B*C;}复制代码

每次遇到 await 关键字时,Promise 都会停下在,一直到运行结束,所以总共花费是 2+4+3 = 9 秒。await 把异步变成了同步

async function getABC() {  // Promise.all() 允许同时执行所有的异步函数  let results = await Promise.all([ getValueA, getValueB, getValueC ]);   return results.reduce((total,value) => total * value);}复制代码

函数总耗时为 4 秒(getValueB 的耗时)。

3、Async/Await 的错误处理

在 Async/Await 语法中,我们可以使用 try/catch 进行错误处理。在 Promise 中的 .catch() 分支会进入 catch 语句。


阅读原文:

讨论地址:

如果你想参与讨论,请

转载地址:http://gqxex.baihongyu.com/

你可能感兴趣的文章
JS取汉字首字母
查看>>
我的友情链接
查看>>
linux 下weblogic10的安装
查看>>
亲自在桌面版Ubuntu14.4下测试过的动画演示10个超有趣的Linux命令
查看>>
No provider available for the service com.alibaba.
查看>>
改变运行脚本的命令窗口标题
查看>>
AFNetWorking
查看>>
以太坊DAO之时间锁定Multisig
查看>>
电视、家庭影院、音响、电影院、中高端声卡测试多声道测试样片
查看>>
centos7.4+GitLab部署
查看>>
学习Wireshark之一:基本用法
查看>>
我的友情链接
查看>>
网站性能测试PV到TPS的转换以及TPS的波动
查看>>
配置yum源文件
查看>>
Linux中权限命令之chmod
查看>>
我的友情链接
查看>>
HTML5究竟好在哪儿
查看>>
ios pod和SVN的日常挖坑
查看>>
Ubuntu Server下启动/停止/重启MySQL数据库的三种方式
查看>>
无法访问您试图使用的功能所在的网络位置
查看>>