es7 的 await, async function

2023-11-17

es7 的 await, async function

简单概念

await:

The await operator is used to wait for a Promise. It can only be used inside an async function.

async:

The async function declaration defines an asynchronous function, which returns an AsyncFunction object. An asynchronous function is a function which operates asynchronously via the event loop, using an implicit Promise to return its result. But the syntax and structure of your code using async functions is much more like using standard synchronous functions.

上面是 mdn 对两个概念的释义, 简单理解就是:

await 用来等待一个 promise 实例, 只能用在 async function 对应的函数中。

async function 用来定义一个异步函数。

浏览器来说异步一般就是 1. 定时器; 2. 网络请求 3. dom, bom 事件,并且异步的执行都是 通过事件队列进行的

案例

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>await</title>
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> 
</head>

<body>
  <script>
    // await 存在的意义可能是 为了 封装 Promise 对象
    function resolveAfter2Seconds(x) { // 异步事件, ajax 请求
      return new Promise((res, rej) => {
        setTimeout(() => {
          if (x) {
            x *= x;
            res(x);
          } else {
            // rej('real params required!');
            rej();
          }
          
        },2000)
      } );
    }

    async function f1 (x) {
      let y = await resolveAfter2Seconds(x);

      // 获取数据后要做的事情
      console.log(`y ---- ${y}`);
    }


    async function f2 () {
      var y = await 20;
      console.log(y);
    }

   async function f3(x) {
      let y = await resolveAfter2Seconds(x)
              .catch(err => console.log(err));
      // 异步结束后要做的事情
      // 如果 y 存在说明 success , y 为 undefined 则 表明 失败了
      console.log(`y ---- ${y}`);
    }
  </script>
</body>

</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

es7 的 await, async function 的相关文章

  • Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

    我需要的是两个 ng views 的功能 因为我不能 我想更改某些内容的innerHTML 并编译它 我遇到的问题是 当我再次更改内容时 我可以编译 但是 Angular 是否会自行删除绑定 或者我必须手动执行此操作 如果是这样 怎么办 编
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 是否存在 IsCallable 为 false 但 IsConstructor 为 true 的 JS 对象?

    ECMAScript 规范函数可调用 https www ecma international org ecma 262 6 0 index html sec iscallable当且仅当其参数具有 Call 内部方法时返回 true 它在
  • 如何使用javascript将大图像转换为十六进制?

    如果我尝试将图像转换为十六进制 无论我使用哪个函数 我都会收到此错误消息 该图像的大小为 7 MB 19812 毫秒 清理 1401 2 1455 0 gt 1401 2 1455 0 MB 9 9 0 ms 自上次 GC 以来 8 3 m
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 将 UMD Javascript 模块导入浏览器

    你好 我正在对 RxJS 进行一些研究 我可以通过在浏览器中引用它来使用该库 如下所示 它使用全局对象命名空间变量 Rx 导入 我可以制作可观察的东西并做所有有趣的事情 当我将 src 更改为指向最新的 UMD 文件时 一切都会崩溃 如下所
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐

  • vue-el-admin 使用?

    一 搭建 下载 启动 下载地址 panjiachen vue el admin Gitee com 共两个版本 vue element admin 完善版 vue admin template 极简版 启动 node js切换版本到16及以
  • STM32——端口复用与重映射

    目录 端口复用的概念 内置外设的概念 端口复用的概念 端口复用的配置 配置示例 串口1 复用GPIO的配置 STM32中文参考手册 110页 端口重映射概念 端口重映射概念 部分重映射 完全重映射 AFIO时钟 开启AFIO情况 重映射端口
  • 用户注册及登录测试用例小记

    用户注册及登录测试用例
  • 更换PostgreSQL的data并重启服务

    更换 PostgreSQL 的 data 文件夹并重新启动 PostgreSQL 服务 适应场景 系统崩溃 需要恢复 PostgreSQL 数据及服务 平时可用的一种 PostgreSQL 备份 还原手段 操作步骤 导出 PostgreSQ
  • @SpringBootApplication注解学习

    SpringBootApplication 组合注解 具有多个注解功能 SpringBootConfiguration Documented 表明这个注解应该被 javadoc工具记录 没什么用 Configuration 表示当前类可以看
  • (ffmpeg)ffmpeg+SDL的简单播放器(雷霄骅)更新版

    代码源自雷神 一个是播放音频的demo 可以播放MP3和AAC 但是MP3应该是没有封面的 另一个是播放ts格式的视频 没有声音 源码可以到雷神博客下载 但是因为ffmpeg库的更新问题 并不能直接在ubuntu下直接运行 笔者做了修改 在
  • 第九周 【项目3 - 利用二叉树遍历思想解决问题】

    Copyright c 2017 烟台大学计算机与控制工程学院 All rights reservrd 作者 赵楷文 完成时间 2017年10月28日 版本号 v1 0 问题描述 利用二叉树遍历思想解决问题 一 头文件 btree h 包含
  • 支付宝、微信、银联三种支付平台链接

    1 申请支付宝需要的资料 支付宝移动开发平台 1 单位营业执照彩色扫描件或数码照片 2 组织机构代码证彩色扫描件或数码照片 3 对公银行账户 基本账户 一般账户均可 4 法定代表人的身份证彩色扫描件或数码照片 若为代理人 即法人以外的公司代
  • Redis(三)分布式应用

    一 分布式支持 1 性能 Redis本身的QPS已经很高了 但是如果在一些并发量非常高的情况下 性能还是会受到影响 这个时候我们希望有更多的Redis服务来分摊压力 实现负载均衡 2 高可用 如果只有一个Redis服务 一旦服务宕机 那么所
  • 解决在安装vue-cli脚手架出现的问题

    今天下载安装vue cli脚手架的时候 出现如下问题 刚开始我还以为是我曾经下载过vue cli 然后我便去执行卸载的命令 事实证明我从未下载过vue cli脚手架 下面我就记录一下我自己的解决方法 npm WARN deprecated
  • 关于遗传算法

    关于遗传算法 有很多袋鼠 它们降落到喜玛拉雅山脉的任意地方 这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰 但每过几年 就在一些海拔高度较低的地方射杀一些袋鼠 于是 不断有袋鼠死于海拔较低的地方 而越是在海拔高的袋鼠越是能活得更久 也越有机会生
  • ZooKeeper面试题(2020最新版,狂神说docker进阶笔记

    这里 process 主要就是通过 ServerCnxn 对应的 TCP 连接发送 Watcher 事件通知 9 客户端回调 Watcher 客户端 SendThread 线程接收事件通知 交由 EventThread 线程回调 Watch
  • 如何在EngineeringVillage(EI Compendex)检索中文期刊

    工作环境 蓝色粗体字为特别注意内容 1 系统环境 Win7 Ultimate sp1 2 软件环境 Google Chrome浏览器 3 参考文献 https info b2b168 com s168 51687540 html 有时候我们
  • 官网下载python,下载pycharm

    一 下载python 访问python官网 https www python org downloads 点击 Downloads Windows 选择要下载的历史版本 点击 保存本地路径即可完成下载 二 下载pycharm 访问pycha
  • 结构体大小计算

    求结构体的大小是我们面试经常考察的一个问题 必须熟练的掌握 首先我们必须懂结构体的内存对齐规则 如下 1 第一个成员在与结构体变量偏移量为0的地址处 2 其他成员变量要对齐到某个数字 对齐数 的整数倍的地址处 对齐数 编译器默认的对齐数 v
  • Unittest 之 DDT 的原理解析

    引言 前面的文章介绍了如何在 Python 的 Unittest 框架中来使用 ddt 实现数据驱动的自动化测试 在了解了 ddt 的使用后 你是否有过如下疑问 ddt 是如何把你的测试数据转换传给你的测试用例 当你的一组数据有多个参数时
  • 损失函数(IoU、GIoU、DIoU、CIoU)

    一 IoU 1 笔记原页 IoU Loss 1 IoU 2 IOU优缺点 目标检测中常常用iou来衡量proposal或anchor和gt之间的重合度 也就是他们之间的交并比 是目标检测中重要的评价尺度 鲜明的特点就是对尺度scale不敏感
  • 0/1背包问题(递归求解)

    0 1背包问题 0 1背包问题是十分常见的算法 下面我就是我对此问题的分析 引言 一想到0 1背包问题 首先会想到用递归求解 但此问题的递归不像数学公式中的递归那么简单 首先是此问题的分支比较多 需要判断背包的容量是大于 小于还是等于当前物
  • 正则表达式大全,一篇前后端都可用

    正是掌握了这些正则表达式 冰河平均每天比别人少写200行代码 极大的提高了研发效率 熟练的掌握正则表达式 能够帮助程序员以最快的速度写出最优雅的代码 冰河在多年的编程工作中 对使用过的正则表达式进行了梳理和总结 这些正则表达式能够帮助你节省
  • es7 的 await, async function

    es7 的 await async function 简单概念 await The await operator is used to wait for a Promise It can only be used inside an asy