async函数用法

news2024/11/26 4:47:46

目录

1.概念

2.本质

3.语法

4.特点

5.async基本使用

6.async里的await普通函数返回值

7.async里的await Promise函数成功返回值

 8.async里的await Promise函数失败返回值

 9.解决async里的await Promise函数失败后不执行下面内容


1.概念

真正意义上解决异步回调的问题,同步流程表达异步操作

2.本质

Generator的语法糖

3.语法

async function foo(){
    await 异步操作;
    await 异步操作;
}

4.特点

1、不需要像Generator去调用next 方法,遇到await等待,当前的异步操作完成就往下执行

2、返回的点是promise对象,可以用then 万法进行下一步操作

3、async取代Generator西数的星号*,await取Generator的yield

4、语意上更为明确,使用简单

5.async基本使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
  // async 基本用法
  async function foo(){
    return new Promise(resolve => {
      setTimeout(resolve,2000)
    })
  }

  async function testAsync(){
    console.log("开始执行",new Date().toTimeString())
    await foo();
    console.log("开始执行",new Date().toTimeString())
  }
  testAsync();

</script>
</body>
</html>

6.async里的await普通函数返回值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>async</title>
</head>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
  function test2(){
    return {code:200,data:{}}
  }
  // async 里面 await 返回值
  async function asyncPrint(){
    let res = await test2();
    console.log(res)
  }
  asyncPrint()
</script>
</body>
</html>

7.async里的await Promise函数成功返回值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>async</title>
</head>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
  // async 里面 await 返回值
  async function asyncPrint(){
    let res = await Promise.resolve({"key":"value"});
    console.log(res)
  }
  asyncPrint()
</script>
</body>
</html>

 8.async里的await Promise函数失败返回值

解决报错后面代码不执行,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>async</title>
</head>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
  // async 里面 await 返回值
  async function asyncPrint(){
    let res = await Promise.reject({"code":"400"});
    console.log(res)
  }
  asyncPrint()
</script>
</body>
</html>

 

 9.解决async里的await Promise函数失败后不执行下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>async</title>
</head>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
    async  function test(obj){
        return new Promise((resolve,reject)=>{
            // 模拟异常
            // key=1为异常,异常处理也用resolve()函数
            if(obj.key==1){
                resolve(false);
            }else{
                resolve({code:200})
            }

        })
    }
  // async 里面 await 返回值
  async function asyncPrint(){
    let res = await test({key:1});
    console.log(res)
    console.log("12313")
  }
  asyncPrint()

</script>
</body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)

目录 第一步&#xff1a;注册okta账号 第二步&#xff1a;配置okta应用信息 第三步&#xff1a;下载Idp.xml文件 第四步&#xff1a;okta特定配置 第五步&#xff1a;集成测试 基于SuccessFactors的单点登录实现 Github工程代码链接 小结 笔者以前写过一篇关于saml2.0单…

Barra模型因子的构建及应用系列六之Book-to-Price因子

一、摘要 在前期的Barra模型系列文章中&#xff0c;我们构建了Size因子、Beta因子、Momentum因子、Residual Volatility因子和NonLinear Size因子&#xff0c;并分别创建了对应的单因子策略&#xff0c;其中Size因子和NonLinear Siz因子具有很强的收益能力。本节文章将在该系列…

AI 协助办公 |记一次用 GPT-4 写一个消息同步 App

GPT-4 最近风头正劲&#xff0c;作为 NebulaGraph 的研发人员的我自然是跟进新技术步伐。恰好&#xff0c;现在有一个将 Slack channel 消息同步到其他 IM 的需求&#xff0c;看看 GPT-4 能不能帮我完成这次的信息同步工具的代码编写工作。 本文记录了我同 GPT 主要的交互过程…

不定积分练习

不定积分练习 在看视频的时候遇到了一道比较有趣的题&#xff0c;在这里给大家分享一下。 题目 计算 ∫ ( 1 x − 1 x ) e x 1 x d x \int(1x-\dfrac 1x)e^{x\frac 1x}dx ∫(1x−x1​)exx1​dx 解&#xff1a; \qquad 原式 ∫ e x 1 x d x ∫ x ( 1 − 1 x 2 ) e x 1…

ESP Certificate Bundle 分享

基本概念 数字签名&#xff1a;是一种将相当于现实世界中的盖章、签字的功能在计算机世界中进行实现的技术。使用数字签名可以识别篡改和伪装&#xff0c;还可以防止否认。 证书&#xff1a;要开车得先靠驾照&#xff0c;驾照上面记有本人的照片、姓名、出生日期等个人信息&a…

【大唐杯学习超快速入门】5G智能网络优化

这里写目录标题 学习--实验背景上下行速率VOLTE掉话率优化时延优化 接入保持特性提升无线接通率切换成功率 附录 数据分析其他几种选项差不多 学习–实验背景 观看视频进行学习&#xff0c;理解该仿真的内涵 使用人工智能代替人工分析&#xff0c;对5G网络进行优化 上下行速率…

Centos Linux 操作系统中配置Gitlab服务器

基本准备 安装常用的工具包 linux根据操作系统的不同&#xff0c;有不同的安装工具&#xff0c;如&#xff0c; 操作系统 格式 工具 Debian .deb apt, apt-cache, apt-get, dpkg Ubuntu .deb apt, apt-cache, apt-get, dpkg CentOS .rpm yum Fedora .rpm dnf …

企业数智底座白皮书:详解数智平台必备的六大能力

在以“升级企业数智化底座”为主题的2023用友BIP技术大会上&#xff0c;用友联合全球权威咨询机构IDC共同发布《建设数字中国 升级数智底座——企业数智化底座白皮书》&#xff0c;在这本数智平台白皮书里详细解读了企业数智平台应该具备的六大基础能力。 当前企业数智化能力进…

一文剖析mlock锁原理

一般用户空间关联的物理页面是按需通过缺页异常的方式分配和调页&#xff0c;当系统物理内存不足时页面回收算法会回收一些最近很少使用的页面&#xff0c;但是有时候我们需要锁住一些物理页面防止其被回收&#xff08;如时间有严格要求的应用&#xff09;&#xff0c;Linux中提…

市面上的智能电表都有多少安的?适用于那些场景?

随着智能化技术的快速发展&#xff0c;智能电表已经成为了家庭和公寓物业配电系统的必备设备之一。智能电表的功率等级通常为10A或15A&#xff0c;具体取决于电表型号和用途。那么&#xff0c;这些功率等级的智能电表适用于哪些场景呢&#xff1f; 首先&#xff0c;10A功率等级…

【实验练习】基于自注意力机制Vision Transformer模型实现人脸朝向识别 (Python实现) 内容原创

题目 人脸识别是一个复杂的模式识别问题&#xff0c;人脸识别是人脸应用研究中非常重要的一步。由于人脸形状不规则、光线和背景条件多样&#xff0c;导致人脸检测精度受限。实际应用中&#xff0c;大量图像和视频源中人脸的位置、朝向、朝向角度都不是固定的&#xff0c;极大…

内网渗透—隧道技术

内网渗透—隧道技术 1. 隧道技术介绍1.1. 内网—隧道技术1.2. 常见的隧道协议1.3. 前置条件1.4. 判断内网的连通性 2. 网络层隧道技术2.1. ICMP隧道技术2.1.1. 常见工具2.1.2. Pingtunnel基础演示2.1.2.1. 下载服务端2.1.2.2. 下载客户端2.1.2.3. 设置CS连接2.1.2.4. 连接测试 …

功能上新|对比分析、Batches数量、函数释义Tips

本篇是继功能上新&#xff5c;内存篇、GPU篇之后&#xff0c;为大家展示更多关于提升浏览UWA GOT Online Overview报告体验的优化项&#xff0c;包括Overview报告的对比分析、Batches数量、函数释义Tips等。这些功能可以让你更快上手对报告的理解&#xff0c;亦或者更好地融入在…

.Net Core 6 WebApi 项目搭建(一、简单搭建)

前言 对于后端开发者最耻辱的是什么&#xff0c;是只会增删改查&#xff0c;只会CV&#xff0c;只会业务代码。没错&#xff0c;我就是被钉在耻辱柱上的一员&#xff0c;3年开发经验&#xff0c;不会搭建框架&#xff0c;只会写业务代码&#xff0c;丢人丢人啊&#xff0c;所以…

【XR】One More Thing:Vision Pro ,7年磨一剑,2023WWDC苹果发布Vision MR

One More Thing&#xff1a;Vision Pro &#xff0c;7年磨一剑&#xff0c;2023WWDC苹果发布Vision MR 1. 苹果MR Vision Pro&#xff1a;1. 专利布局&#xff1a;苹果表示在开发过程中申请了5000多项专利。2. 专属感知计算芯片3. 显示屏系统方面4. 续航方面5. Vision MR 的新框…

MATLAB安装配置MinGW-w64 C++编译器

文章目录 前言一、Mingw安装1、安装教程2、验证 二、MATLAB安装配置MinGW总结 #pic_center 前言 只是为方便学习&#xff0c;不做其他用途 一、Mingw安装 在网上找到的安装一直报错&#xff1a;The file has been downloaded incorrectly 1、安装教程 建议参考博客Mingw快捷安…

C++内存序、屏障和原子操作

文章目录 一、原子类型二、原子操作函数三、内存序1&#xff09;happens-before和synchronizes-with语义2&#xff09;内存序模式 四、标准库函数五、栅栏&#xff08;Barrier&#xff09; 一、原子类型 标准原子类型的备选名和与其相关的 std::atomic<> 特化类&#xf…

探索低代码的新形态(D2C、ChatGPT)

前言 低代码平台的出现&#xff0c;是互联网快速发展的背景下&#xff0c;满足产品快速迭代的实际需求。现在国内外都已经拥有非常多优秀的开源项目&#xff08;如&#xff1a;lowcode-engine&#xff09;和成熟的商业产品&#xff08;如&#xff1a;Mendix 、PowerPlatform&a…

Orillusion次时代 WebGPU 引擎

Orillusion 次时代 WebGPU 引擎 官网: https://www.orillusion.com/ 教程: https://www.orillusion.com/guide/ Orillusion 引擎是一款完全支持 WebGPU 标准的轻量级渲染引擎。基于最新的 Web 图形API标准&#xff0c;我们做了大量的探索和尝试&#xff0c;实现了很多曾经在 We…

python接口自动化(三)--如何设计接口测试用例(详解)

在开始接口测试之前&#xff0c;我们来想一下&#xff0c;如何进行接口测试的准备工作。或者说&#xff0c;接口测试的流程是什么&#xff1f;有些人就很好奇&#xff0c;接口测试要流程干嘛&#xff1f;不就是拿着接口文档直接利用接口 测试工具测试嘛。其实&#xff0c;如果…