前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >什么是Async await,和Promise有什么区别

什么是Async await,和Promise有什么区别

作者头像
子夜星辰
发布于 2022-11-15 08:24:01
发布于 2022-11-15 08:24:01
1.5K00
代码可运行
举报
文章被收录于专栏:李白偷偷偷猪李白偷偷偷猪
运行总次数:0
代码可运行

前两篇文章给大家介绍了Promise和如何实现一个简单的Promise,那么什么是Async await呢,他们又有什么关系呢

Async/await:是一个用同步思维解决异步问题的方案

  1. 会自动将常规函数转换成Promise,返回值也是一个Promise对象
  2. 只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数
  3. 异步函数内部可以使用await
  4. await 放置在Promise调用之前,await 强制后面点代码等待,直到Promise对象resolve,得到resolve的值作为await表达式的运算结果
  5. await只能在async函数内部使用,用在普通函数里就会报错

和Promise相比较 相同点

为了解决异步流程问题,promise是约定,而async更优雅

区别

  1. Promise是ES6,而async是ES7
  2. Promise原来有规范的意义,Promise a,b,c,d 等规范,最终确定的是Promise a+ 规范
  3. Promise链式操作,自己catch异常。async则要在函数内catch,好在现在catch成本较低
  4. Promise有很多并行神器,比如Promise.all\Promise.race等。这些是async没法搞定的
  5. Promise是显式的异步,而 Async/await 让你的代码看起来是同步的,你依然需要注意异步
  6. Promise即使不支持es6,你依然可以用promise的库或polyfil,而async就很难做,当然也不是不能,成本会高很多
  7. async functions 和Array.forEach等结合,很多tc39提案都在路上或者已经实现,处于上升期,而promise也就那样了

总结:Async/awati 简单好用,是大势,肯定得学,而async的使用绕不开Promise,所以Promise是必会的。

下面的例子简单介绍一下Async/await 使用方法;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        function a() { 
            return new Promise((resolve, reject) => {
                setTimeout(() => { console.log('a执行'); resolve(3) }, 3000)
            });
        }

        function b() {
            return new Promise((resolve, reject) => {
                setTimeout(() => { console.log('b执行'); resolve(20) }, 2000)
            });
        }

        async function doIt() {
            try {  // async方法会吞掉所有报错信息,如果此例子中b()返回的是reject,不使用try...catch的话,无法获取到错误信息
                const res1 = await a();
                const res2 = await b();      //  这样的写法是不是很符合同步思维呢
                console.log(res1 + res2);
            } catch (err) {
                console.log(err)
            }

        }
        
		// Promise  方法调用 
		
        // function doIt() {
        //     a().then(res1 => {
        //         return b().then(res2 => {
        //             console.log(res1 + res2)
        //         })
        //     }).catch(err => {
        //         console.log(err)
        //     })
        // }

        doIt();  // a执行  b执行  23
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为 Windows RDP 配置 TLS, Windows Remote Desktop Enable TLS
之前写了一篇关于如何配置 Windows RDP 加密证书的教程(https://www.alongw.cn/archives/926),但是显然这篇教程的内容有一些的过时以及差劲
阿龙w
2023/12/30
4.8K0
为 Windows RDP 配置 TLS, Windows Remote Desktop Enable TLS
服务器SSL不安全漏洞修复方案
关于SSL POODLE漏洞 POODLE = Padding Oracle On Downgraded Legacy Encryption.是最新安全漏洞(CVE-2014-3566)的代号,俗称“贵宾犬”漏洞。 此漏洞是针对SSL3.0中CBC模式加密算法的一种padding oracle攻击,可以让攻击者获取SSL通信中的部分信息明文,如果将明文中的重要部分获取了,比如cookie,session,则信息的安全出现了隐患。 从本质上说,这是SSL设计上的缺陷,SSL先认证再加密是不安全的。 如何检测漏
Vicsh
2018/05/16
4.2K0
windows使用技巧,快速打开策略配置器
运维人员工作中不时需要做一些windows的策略配置,windows的一些策略配置器不易找到,比如本地策略配置器,组策略配置器。因为窗口不易翻到,使用命令可以快速打开,这需要我们记住一些常用的命令,这里分享几个:
运维开发王义杰
2023/08/16
3310
windows使用技巧,快速打开策略配置器
比如,没有Dock bar,没有桌面,应用图标太丑,右击菜单也与物理机登录不一样,整体的UI也不一样了,安装1个优化工具 apt install gnome-tweak-tool
qq606633
2023/11/10
3610
在Windows Server 2008上部署免费的https证书
在Windows平台上,许多优秀的开源作者已经为我们提供了相当好用的 Let s Encrypt 客户端:
从今若
2019/09/18
2.3K0
内网渗透 | 了解和防御Mimikatz抓取密码的原理
前不久在使用mimikatz抓取hash的时候遇到了报错,本着追根溯源的原则去查看了mimikatz抓取密码的原理。在学习的过程中发现了mimikatz的每种报错都有不同的原因,本文就记录一下自己的学习过程,从mimikatz的防御角度出发来分析如何防御mimikatz抓取密码。
HACK学习
2021/06/24
7.1K0
内网渗透 | 了解和防御Mimikatz抓取密码的原理
靶场学习-从joomla到拿下域控
这里发现一个疑似后台地址,访问http://192.168.2.252/administrator/
hyyrent
2022/12/26
1.3K0
靶场学习-从joomla到拿下域控
Win平台安全配置.md
0x00 微软杀毒软件停止/启用 由于windows Defender的MsMpSvc Microsoft Antimalware Service 的进程内存使用率高(一般是在服务器上)
全栈工程师修炼指南
2020/10/23
1.4K0
Win平台安全配置.md
红队攻击-对RDP常规操作
rdp服务是我们常用的服务,可以不是3389端口,可以改成任意端口,时候为了利用它,必须先找出来服务端口,毕竟管理员也鸡贼。
Gamma实验室
2021/05/18
2K0
红队攻击-对RDP常规操作
配置更安全的服务器Windows 2003 Server
步骤 ==================================================================================== 注意:安装和配置 Windows Server 2003。 1. 将\System32\cmd.exe转移到其他目录或更名; 2. 系统帐号尽量少,更改默认帐户名(如Administrator)和描述,密码尽量复杂; 3. 拒绝通过网络访问该计算机(匿名登录;内置管理员帐户;Support_388945a0;Guest;所有非操作系统服务帐户) 4. 建议对一般用户只给予读取权限,而只给管理员和System以完全控制权限,但这样做有可能使某些正常的脚本程序不能执行,或者某些需要写的操作不能完成,这时需要对这些文件所在的文件夹权限进行更改,建议在做更改前先在测试机器上作测试,然后慎重更改。 5. NTFS文件权限设定(注意文件的权限优先级别比文件夹的权限高): 文件类型 建议的 NTFS 权限 CGI 文件(.exe、.dll、.cmd、.pl) 脚本文件 (.asp) 包含文件(.inc、.shtm、.shtml) 静态内容(.txt、.gif、.jpg、.htm、.html) Everyone(执行) Administrators(完全控制) System(完全控制) 6. 禁止C$、D$一类的缺省共享 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters AutoShareServer、REG_DWORD、0x0 7. 禁止ADMIN$缺省共享 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters AutoShareWks、REG_DWORD、0x0 8. 限制IPC$缺省共享 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa restrictanonymous REG_DWORD 0x0 缺省 0x1 匿名用户无法列举本机用户列表 0x2 匿名用户无法连接本机IPC$共享 说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server 9. 仅给用户真正需要的权限,权限的最小化原则是安全的重要保障 10. 在本地安全策略->审核策略中打开相应的审核,推荐的审核是: 账户管理 成功 失败 登录事件 成功 失败 对象访问 失败 策略更改 成功 失败 特权使用 失败 系统事件 成功 失败 目录服务访问 失败 账户登录事件 成功 失败 审核项目少的缺点是万一你想看发现没有记录那就一点都没辙;审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义。 与之相关的是: 在账户策略->密码策略中设定: 密码复杂性要求 启用 密码长度最小值 6位 强制密码历史 5次 最长存留期 30天 在账户策略->账户锁定策略中设定: 账户锁定 3次错误登录 锁定时间 20分钟 复位锁定计数 20分钟 11. 在Terminal Service Configration(远程服务配置)-权限-高级中配置安全审核,一般来说只要记录登录、注销事件就可以了。 12. 解除NetBios与TCP/IP协议的绑定 控制面版——网络——绑定——NetBios接口——禁用 2000:控制面版——网络和拨号连接——本地网络——属性——TCP/IP——属性——高级——WINS——禁用TCP/IP上的NETBIOS 13. 在网络连接的协议里启用TCP/IP筛选,仅开放必要的端口(如80) 14. 通过更改注册表Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous = 1来禁止139空连接 15. 修改数据包的生存时间(TTL)值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128) 16. 防止SYN洪水攻击 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters SynAttackProtect REG_DWORD 0x2(默认值为0x0) 17. 禁止响应ICMP路由通告报文 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters \Interfaces\interfa
全栈程序员站长
2022/07/04
5.4K0
Windows云服务器就地升级注意事项
就地升级的文件或者说ISO哪里来,参考我这篇文档https://cloud.tencent.com/developer/article/2419258
Windows技术交流
2024/05/21
4060
内网渗透测试:初探远程桌面的安全问题
远程桌面对了解内网渗透的人来说可能再熟悉不过了。在渗透测试中,拿下一台主机后有时候会选择开 3389 进远程桌面查看一下对方主机内有无一些有价值的东西可以利用。但是远程桌面的利用不仅如此,本节我们便来初步汇总一下远程桌面在内网渗透中的各种利用姿势。
FB客服
2021/07/02
4K0
注册表常用键值意义
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
owent
2018/08/01
2.7K0
Windows之注册表介绍与使用安全
PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。 早期的图形操作系统,如Win3.x中对软硬件工作环境的配置是通过对扩展名为.ini的文件进行修改来完成的,但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件,并且在网络上难以实现远程访问。 为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。 按照这一原则Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。
全栈工程师修炼指南
2020/10/26
2K0
Windows之注册表介绍与使用安全
横向渗透之 [RDP]
也可以通过reg配置文件的方式启动:regedit /s startrdp.reg
重生信息安全
2020/03/06
2.5K0
Win11彻底关闭Defender(包括禁用、删除Defender服务和文件夹)
一般是不建议禁止defender自动更新或者彻底关闭Defender的,但如果你有其他替代的安全方案了,觉得defender有干扰业务隐患,想干掉,那这篇文档非常适用。耗费了不少心血在server2016-2022和win10、win11上对比实践。
Windows技术交流
2023/05/26
20.8K0
远程桌面服务影子 – 超越影子会话
在某些情况下,有时需要有可能查看客户的用户屏幕以制作一些经过验证的屏幕截图或访问一个打开的 GUI 应用程序窗口,其中包含横向移动的秘密,同时合法用户通过 RDP 与您连接不想把他们踢出会议。
Khan安全团队
2022/01/04
5.3K0
3389 Windows 远程端口修改工具
https://pan.baidu.com/s/1Rt3ZFXY0sOD5okeb9VI3_A
Windows技术交流
2019/12/23
6.4K0
Windows 操作系统安全配置实践(安全基线)
描述: 由于最近工作和学习的需要就将针对于Windows系统的一些安全配置做了如下记录,便于后期的知识结构化,并在后续的工作继续进行添加安全加固的一些技巧,同时希望广大的大佬也能多多扩充安全加固配置项,可以通过邮箱、博客、以及公众号联系我。
全栈工程师修炼指南
2022/09/28
4.8K0
Windows 操作系统安全配置实践(安全基线)
加密usb接口防止U盘入侵
之前给大家介绍了badusb这个工具,大家可以知道黑客可以通过U盘进行快速入侵,那么应该如何防御这种手法呢,这篇文章就给大家介绍一下。
网e渗透安全部
2019/08/09
1.4K0
加密usb接口防止U盘入侵
相关推荐
为 Windows RDP 配置 TLS, Windows Remote Desktop Enable TLS
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验