JavaScript中的异步函数(async/await)

news2024/9/23 13:10:20

1、async:异步的,await:等待。

一、作为async标识的函数与正常函数有两个区别

1、当我们用async来声明一个函数的时候就说明这个函数是异步函数了,但事实上被声明的函数仍然是会在后面js之前求值,代码如下:

  async function test() {
    console.log(111);
  }
  test()
  console.log(222);

打印顺序并没将test作为异步处理,结果如下:

111

222

2、JavaScript一般的函数如果不指定返回结果默认返回undefined,async标识的函数返回的是一个fullied期约。代码如下:

  async function test() {
    return 3
  }
  console.log(test());

返回的是一个fulfilled期约:

 

二、await

1、这个关键字主要是针对不会马上完成的任务,所以await必须在async中使用,使用await可以暂停异步代码的执行,等待期约解决。经常使用的案例:

  async function test() {
    const num = await new Promise((resolve, rejected) => {
      const timer = setTimeout(() => {
        console.log('过了3秒打印');
        resolve()
      }, 3000)
    })
    console.log('同步这个函数里面的代码');
  }
  console.log(test());

  console.log('标识');

 结果如下:

 

2、await期待一个thenable接口的对象,但常规值也是可以的,如果是thenable接口那么这个promise对象可以由await来‘解包’。代码如下:

  async function demo() {
    console.log(await 1);
  }
  demo()

3、对于拒绝的promise状态await会报一场,代码如下:

async function demo() {
    console.log(await Promise.reject(3));
}
demo()

 结果:

 

三、总结:

在实际开发体验中async和awiat是形影不离的,如果只有async那跟不加效果是一样的,如果仅仅有await那么该方法会报异常。 async和await的核心是:如果是thenable接口那么这个promise对象可以由await来‘解包’。

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

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

相关文章

四通道电容式智能门锁触摸芯片GT304L

智能门锁是指区别于传统机械锁的基础上改进的,在用户安全性、识别、管理性方面更加智能化简便化的锁具。智能门锁是门禁系统中锁门的执行部件。智能门锁区别于传统机械锁, 是具有安全性, 便利性, 技术的复合型锁具。使用非机械钥匙作为用户识别ID的成熟技术&#xf…

分布式事务(CAP定理和BASE理论)

CAP定理 分布式系统无法同时满足这三个指标,这个结论就叫做CAP定理。 分布式系统三个指标: Consistency (一致性)Availability (可用性)Partition tolerance(分区容错性) Consistency (一致性) 用户访问分布式系统中的任意节点,得到的数据必须一致 A…

【最终截稿 | Springer 独立出版 | EI稳定检索】 2023年能源与环境工程国际会议(CoEEE 2023)

会议简介 Brief Introduction 2023年能源与环境工程国际会议(CoEEE 2023) 会议时间:2023年5月19日-21日 召开地点:瑞典马尔默 大会官网:www.coeee.org CoEEE 2023将围绕“能源与环境工程”的最新研究领域而展开,为研究人员、工程师…

拥有Java基础对比学习C#基本语法

文章目录 一、引包二、构造函数三、析构函数四、C#数据类型五、加框(boxing)和消框(unboxing)六、运算符七、控制语句八、类的继承九、方法参数的种类十、操作符重载十一、this关键字十二、类的多态十三、抽象类和抽象方法十四、密封类和密封方法十五、接口十六、代…

Laf Assistant:云开发从未如此爽快!

原文链接:https://forum.laf.run/d/67 工欲善其事,必先利其器。在编写代码时,IDE 也是我们不可或缺的。它可以让我们更高效地完成代码编写,提高开发效率。因此,IDE 是我们编写代码中最亲密的伙伴之一。 虽然 Laf 云开…

关于并发编程与线程安全的思考与实践 | 京东云技术团队

作者:京东健康 张娜 一、并发编程的意义与挑战 并发编程的意义是充分的利用处理器的每一个核,以达到最高的处理性能,可以让程序运行的更快。而处理器也为了提高计算速率,作出了一系列优化,比如: 1、硬件…

MS8257N跨阻放大器pin对pin兼容OPA857

MS8257N 是一颗宽带、快速过载恢复时间、快速建立时间、跨阻增益可调、超低噪声的跨阻放大器,主要用于光电监测和各种高性能的光电系统。可pin对pin兼容OPA857。快速过载恢复特性和内部输入保护电路可以让信号从过载传输中快速恢复正常。两档可选跨阻增益保证了极高…

MySQL基础(十八)MySQL8其它新特性

1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是MySQL Optimizer优化器进行了改进。不仅在速度上得…

【Redis】概述与安装

概述 Redis 是什么? Redis(Remote Dictionary Server ),即远程字典服务; 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 Redis 会周期性的把…

深入理解什么是 dp(dip)

文章目录 dp 的计算公式dp 计算的例子dp 的来历究竟什么是 dp dp 的计算公式 dp 是安卓 UI 开发中最常见的单位之一,它有一个别名 dip。dp 与 dip 是同一个意思。dp 指的是什么呢?官方的解释是 device independent pixels(设备独立像素&#…

Golang 函数调用机制

在真实的内存里面是没有test和main栈区的,这里只是为了区分。这两个数据空间是独立的,但是同时都在栈区里面。 这里可以清楚的看到,虽然两个名字都叫n1,但是其实上都是独立的。就好比不同的教师里面坐着名字相同的人。 注意test…

软考A计划-重点考点-专题四(多媒体相关)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Mongodb 在工业场景下的数字解决方案

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

数字经济下的企业数字化转型

上周,由国家网信办、国家发改委、科技部、工信部、国务院国资委、福建省人民政府共同主办的第六届数字中国建设峰会在福州隆重开幕。 本届峰会以“加快数字中国建设,推进中国式现代化”为主题,集中展示数字中国建设最新成果和优秀实践案例&a…

uniapp实现微信小程序横屏适配问题demo效果(整理)

使用VMIN进行布局 先了解css3的两个属性vmax和vmin vmax 相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin竖屏布局的时候,750rpx就是竖屏布局屏幕的宽度…

[前端]深浅拷贝

一、回顾变量类型 基础类型 boolean(bool) number string null undefined 引用类型 object ​ function ​ array 基本类型与引用类型的存储 基本类型一般存储在 栈 (栈小) 栈一旦确认 大小就固定 可能会造成溢出栈一般是先进后出用于存储…

数据库sql语句练习(二)

例题&#xff1a; ●检索出生年份比杜甫早的诗人 select name from poets where birth <( select birth from poets where name 杜甫’) 重点&#xff1a;ALL&#xff0c;SOME,ANY(对于any&#xff0c;有些系统用some) 使用all或者any时。必须同时使用比较运算符 注&…

Linux配置sftp用户访问指定目录

一、环境 开发环境&#xff1a;Win 10 -- 64位 服务环境&#xff1a;centos7 SSH&#xff1a;OpenSSH_7.4p1 二、新建sftp用户&#xff1a; 需要root权限执行-------------------------- 1.新建一个用户组 为了方便后面添加用户 groupadd sftp2.添加用户 useradd -g sf…

【Python】【进阶篇】27、Django url标签详解

目录 27、Django url标签详解1. url标签基本使用2. 给定参数的动态url 27、Django url标签详解 在 Django 的模板语言中除了我们前面章节介绍过的 if 标签和 for 标签之外&#xff0c;还有许多我们时常用到标签&#xff0c;比如 url 标签。 1. url标签基本使用 Django 的模板…

Xcode 使用 Instruments 无法找到代码中耗时挂起操作的解决

问题现象 Instruments 是一套非常有用的代码分析和调试利器,我们经常用它来查找 App 中的性能瓶颈。 不过,有时 Instruments 却无法捕获到系统明显挂起或长耗时的方法,这是怎么回事呢? 如上图所示,App 运行中系统(Severe Hang)被挂起长达 3 秒钟,但在 Instruments 竟…