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 的相关文章

  • Backbone.Marionette 与 Backbone-Boilerplate

    我是 Backbone 的新手 正在尝试决定如何进行开发 目前我想知道人们什么时候会使用backbone marionette而不是backbone boilerplate 据我所知 Marionette 的规范性更强 但这是大多数人进行开
  • Javascript 中的无限原型继承

    我正在学习 Javascript 中的原型继承 根据我的理解 我尝试使用它来将进程发送到无限递归链接中 我对原型继承的想法是一个对象 它是一个函数 保存原型链接 该对象的任何实例都指向它 因此 如果我说instance someproper
  • 如何在NodeJs中应用Java/Spring的分层架构?

    我已经尝试学习 NodeJS 有一段时间了 所有书籍和教程似乎都遵循类似的代码结构模式 例子 const express require express const app express app set view engine hbs a
  • 当来源为 http 且目标 url 为 https 时,如何在本地网络中发出 POST 请求?

    我需要从 POS 销售点 http 向支付终端 https 发出 POST 请求 它们连接在我的本地网络中 当我向邮递员发出请求时 一切正常 但每当我从 POS 发出请求时 我都会收到错误 POSThttps 我的IP地址 8443 nex
  • Node.js req.body 在表单数据内容类型中未定义

    在这里 我为这个表单数据传递 API 创建了一个小演示 现在我正在使用邮递员检查此 API 但我没有收到任何数据 Code const http require http const express require express cons
  • 输入类型货币格式,带逗号和小数位 2

    我只是想问如何制作输入类型文本的货币格式的JavaScript 当您输入数字时 数字是否可能带有逗号 另外 如何使数字固定为 2 个小数 如果我输入 3 位小数 最后一个数字将四舍五入 因此可以是 2 位小数 我有一个仅接受数字的文本框 我
  • 提交后如何重置表单?

    我有一个简单的表格 假设它需要一个电子邮件地址 提交表单后 消息堆栈会通知用户其地址已成功提交 问题是 提交地址后 带有电子邮件的表单字段仍然包含用户输入的电子邮件地址 我该如何重置该字段 我必须为此使用 JavaScript 吗 谢谢 w
  • .map() Javascript ES6 地图?

    你会怎么做 本能地 我想做 var myMap new Map thing1 1 thing2 2 thing3 3 wishful ignorant thinking var newMap myMap map key value gt v
  • 我可以在 Express POST 请求中进行 DOM 操作吗?

    我正在使用基本的 HTML CSS 前端 目前有一个登陆页面 上面有一个表单 可将 一些数据发送到数据库 当请求完成后 它期待某种响应 在这种情况下 我正在重新渲染页面 但是 我想用某种感谢消息替换表单 以便用户知道它已正确发送 我尝试过简
  • 降低 Nodejs 服务器上的 CPU 利用率

    我正在研究降低 CPU 利用率的有趣方法 在 NodeJS 服务器上 在我的研究过程中 我发现了以下文章 http engineering linkedin com nodejs blazing fast nodejs 10 perform
  • 在 Javascript 中按日期对数组进行排序

    我在用着sort 按日期排序数组 elements data sort function a b return a date getTime b date getTime 问题是某些元素缺少日期 或日期无效 这导致了这个错误 无法读取属性
  • 从右到左的语言和编程问题

    我正在创建一个网络文本编辑器 它使用我创建的新语言 如 BBcode 这种标记语言将采用阿拉伯语 但我面临这些问题 在所有 IDE 和编辑器中将英语和阿拉伯语文本混合在同一行中确实很困难 因为会发生奇怪的事情 单词和字符的顺序发生变化 使用
  • 有没有办法防止 neDB 集合数组中的条目重复?

    var addNewUser function id chatId db update id id push users chatId function err numAffected code after the record is up
  • Gecko/Firefox 对 HTML5 通知的支持

    我想知道是否有任何内置支持HTML5 通知到目前为止 Gecko 浏览器有哪些功能 也许有一些隐藏的开发人员 我知道 WebKitwindow webkitNotifications效果很好 那么 有 Firefox 实现吗 Update
  • 是否存在必须在 HTML/JavaScript 中使用早期绑定/内联事件属性的情况

    在我对以下问题的回答中 事件绑定是什么意思 https stackoverflow com q 6329996 144491 我顺便说一下 使用 inline JavaScript Early Binding 来绑定 JavaScript
  • 如何从 JavaScript 中的 URL 中提取主机?

    捕获域直到结束字符 我需要一个捕获的正则表达式example com在所有这些中 example com 3000 example com pass gas example com example com 如果您确实有有效的 URL 那么这
  • 解析器阻塞与渲染阻塞

    我一直在阅读有关优化网络性能的 Google 开发人员文档 我对那里使用的术语有点困惑 CSS 和 JavaScript 文件都会阻止 DOM 构建 但是 CSS 被称为渲染阻塞 而 JavaScript 被称为解析器阻塞 解析器阻塞 和
  • 添加 sigma.js 导航按钮

    我是 javascript 和 sigma js 的新手 我试图让导航按钮在画布中向上 向下 向左 向右滚动 就像发现的那样here http jcml fr jacomyal osdc2012 demo 到目前为止 我有一个简单的例子 我
  • Dojo require,模块加载失败时连接错误

    当我尝试加载不存在的模块时 它失败并出现 404 错误 当然 我想处理此错误 但不知道如何连接到 错误 事件 根据 Dojo 文档 我应该能够使用它的微事件 API http livedocs dojotoolkit org loader
  • 如何自动加载 Webpack 中给定目录中的所有 JSON 文件? [复制]

    这个问题在这里已经有答案了 编辑 有一个现有的问题 https stackoverflow com questions 29421409 how to load all files in a subdirectories using web

随机推荐

  • 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