async函数

详细解释一下 async/await 的使用方法和优势? asyncawaitasync是一个强大的工具,使得 JavaScript 的异步编程更加简洁和可读。通过使用async函数和await表达式,开发者可以更清晰地管理异步操作的流程,并处理可能的错误。其优势在于提高了代码的可读性、简化了错误处理、允许顺序执行异步操作等。 阅读详情

一、async函数

1、async含义

async函数是Generator函数的语法糖

2、async的使用

async函数使用时将Generator函数的星号(*)替换成async,将yield替换成await

        async function show(){
            return '22'
        }  //show是一个promise函数
        show().then(res=>{
            console.log(res);
        })
async的特点

(1)await只能放到async函数中使用
(2)相比generator语义化更强
(3)await后面可以是promise对象,也可以是数字,字符串,布尔值
(4)async函数返回的是一个promise对象
(5)只要await语句后面的Promise的状态变成reject,那么整个async函数会中断执行

3、验证async函数返回一个promise对象

        async function fn(){}
        console.log(fn());

在这里插入图片描述

4、async函数中出错

        async function fn(){
            throw new Error('出错了')
        }
        fn().then(res=>{
            console.log('res',res);
        }).catch(err=>{
            console.log('err',err);
        })

在这里插入图片描述

5、await后面的语句出错,函数后面将中断执行

错误在成功之后,错误和成功都会执行

        async function fn(){
            let a=await Promise.resolve('成功了')
            console.log(a);
            await Promise.reject('失败了')
        }
        fn().then(res=>{
            console.log('res',res);
        }).catch(err=>{
            console.log('err',err);
        })

在这里插入图片描述
如果错误在前,成功将不执行

        async function fn(){
            await Promise.reject('失败了')
            let a=await Promise.resolve('成功了')
            console.log(a);
            
        }
        fn().then(res=>{
            console.log('res',res);
        }).catch(err=>{
            console.log('err',err);
        })

在这里插入图片描述

解决async函数中的报错

1、使用try{}catch(){}

        async function fn(){
            try{
                await Promise.reject('出错了')
            }catch(err){
                let a=await Promise.resolve('成功了');
                console.log(a);
            }
        }
        fn();

在这里插入图片描述

2、添加catch捕获错误

        async function fn(){
            await Promise.reject('出错了').catch(err=>{
                console.log(err);
            })
            let a=await Promise.resolve('成功了');
            console.log(a);
        }
        fn()

3、统一捕获错误

try {
    let f1 = await Promise.resolve('成功了');
    let f2 = await Promise.resolve('成功了');
    let f3 = await Promise.reject('出错了');
}catch(e){}

4、使用promise.all()方法

// async 
async function fn(){
    let [f1,f2,f3] = await Promise.all([
        Promise.resolve('成功了1'),
        Promise.resolve('成功了2'),
        Promise.resolve('成功了3')
    ])


    console.log(f1);
    console.log(f2);
    console.log(f3);
}
fn();
async function show() {
    let p1 = await new Promise((res, rej) => {
        $.ajax({
            url: 'https://jsonplaceholder.typicode.com/todos/1',
            success: function (data) {
                console.log(data);
                res()
            },
            error: function (err) {
                rej()
            }
        })
    });

    let p2 = await new Promise((res, rej) => {
        $.ajax({
            url: 'https://jsonplaceholder.typicode.com/todos/2',
            success: function (data) {
                console.log(data);
                res()
            },
            error: function (err) {
                rej()
            }
        })
    });

}

let pp = show();
机器视觉检测到底怎么做,经验分享 笔者做机器视觉检测已经有五六年了,也算是对机器视觉的检测技术有了一定的掌握。总的来说,基于机器视觉的检测技术主要包含三个部分:视觉采集模块、后台分析模块和动作决策模块。这几个分类,跟教科书上的有较大差异,很多同学觉得我在杜撰。笔者也不作反驳,因为这是笔者这些年工作经验的总结,自然区别于教科书。下面我们分开来讲这几个模块,同时会把笔者之前的论文做个推荐总结。 所有文章均可在博主的主页中找到,若无法找到,可以用搜索工具。博主的主页: https://blog.youkuaiyun.com/Aoulun 第.. 阅读详情

相关推荐

【3D目标检测】环境搭建(OpenPCDet、MMdetection3d、Det3d)

在Conda虚拟环境中搭建MMdetection3d环境

qq_44703886的博客 4253

你不知道的并发/继发请求操作

你需要知道的知识 async是 Generator 函数的语法糖,总是返回一个promise。 async函数返回的 Promise 对象,必须等到内部所有await命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到return语句或者抛出错误。也就是说,只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数。 正常情况下,await命令后面是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,就直接返回对应的值。 继发请求 使用 for循

liusixsixsix的博客 468

告别机载网络通信混乱:利用ARINC825的LCC与带宽管理机制构建高可靠CAN总线

本文深入探讨了ARINC825规范如何通过逻辑通信通道(LCC)和带宽管理机制解决机载CAN总线通信的混乱问题。文章详细解析了ARINC825的核心架构设计、LCC工程实现、时间触发带宽管理等关键技术,展示了其在提升航空电子系统可靠性和实时性方面的显著效果,为现代飞机通信系统提供了高可靠解决方案。

weixin_26878995的博客 241

async异步函数

async异步函数

weixin_44161385的博客 2573

荔枝派Lichee Nano全志F1C100s烧录避坑指南:从Fel模式到SPI Flash完整流程

本文详细介绍了荔枝派Lichee Nano基于全志F1C100s芯片的SPI Flash烧录完整流程,从FEL模式进入技巧到定制化sunxi-tools编译,再到分区策略与实战烧录步骤。针对开发者常见的烧录程序问题提供了专业解决方案,帮助用户高效完成嵌入式系统部署。

tea88的博客 788

用宝塔面板+CentOS 7.6,30分钟搞定DNF手游私服搭建(附全套资源下载)

本文详细介绍了如何使用宝塔面板和CentOS 7.6在30分钟内快速搭建DNF手游私服。通过图形化界面操作,无需复杂命令,即可完成服务端部署、MySQL数据库配置及客户端适配,适合Linux新手快速上手。

weixin_33737774的博客 602

异步函数async

异步函数async

baidu_39009276的博客 1万+

实验三 Gmapping建图

自主移动机器人第三次实验课,内容包括:(1)turtlebot的gmapping建图;(2)rosbag的使用;(3)gazebo中的gmapping建图。

lj164567487的博客 4649

async 函数的含义和用法及 async 函数与 Generator 函数 的区别是什么?

async 函数的含义和用法 、async 函数与 Generator 函数 的区别 及 使用示例

YHLSunshine的博客 672

Vue - 最新详细实现滑块拖动拼图验证,网站登录验证滑块验证功能,拖动滑块到图片缺口的位置即为成功,滑块验证安全检测(详细示例代码,一键复制运行)

您一定见过很多系统都“配备”了滑块验证、拼图验证、找不同等,本质上都是为了验证登录系统的是人还是机器(代码),如下图所示效果: 您打开项目根目录,终端执行如下命令:拼图式拖动滑块验证 验证拖动滑块验证,滑动拼图/图片点选验证 接下来,在中加入以下代码: 如下图所示: 更多配置示例和参数详见官方文档,以下便是如上效果图的代码:.........

🏆 前端领域优质创作者 1万+

搭建 Newman + Postman + Git + Jenkins 环境教程

一步步搭建 Newman、Postman、Git 和 Jenkins 的环境。这些工具常用来做 API 测试和 CI/CD 自动化,尤其是 Postman 和 Newman 搭配 Git 和 Jenkins,能实现 API 集合的版本管理和自动测试。

Criss@陈磊 435

async 函数

async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是 Generator 函数的语法糖。 什么是语法糖? 意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。 反向还有语法盐: 主要目的是通过反人类的语法,让你更...

qq_42164670的博客 731

全面解析 SAP 事务码 LTMOM 的应用与实践

综上所述,事务码 LTMOM 是 SAP 系统中不可或缺的迁移对象维护工具,它不仅提供了对数据迁移对象的精细配置功能,还通过灵活的数据转换规则与异常监控机制,为企业数据从 SAP ERP 向 SAP S/4HANA 的迁移提供了坚实保障。在数据迁移过程中,并非所有的迁移对象都需要同时启用。业内专家普遍认为,未来的系统升级与数据迁移将更注重业务需求的动态变化与数据实时性的要求,而 LTMOM 作为核心工具,其在流程自动化、数据智能校验以及跨系统数据联动方面的能力,将直接影响企业整体数字化转型的成败。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1007

ES6 async函数

co模块约定,yield命令后面只能是Thunk函数或Promise对象,而async函数的await命令后面,可以是Promise对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即resolved的Promise对象)调用该函数,遇到await就去任务队列中执行异步操作,等到异步操作完成,在执行函数体后面的语句。async取代Generator函数的星号*,await取代Generator函数的yield。//Promise对象方法。//async函数写法。

2501_90329733的博客 575

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JavaScript的async异步函数

在JavaScript中,async关键字用于声明一个异步函数。异步函数允许你在函数内部使用 await 关键字,从而使得代码可以等待一个 Promise 的完成,而不阻塞主线程。这对于处理诸如网络请求、文件读取等耗时操作非常有用,因为它们可以在等待的同时继续执行其他代码,提升应用程序的性能和响应速度。async 关键字用于定义异步函数,使其能够使用 await 关键字等待异步操作的完成,而不会阻塞主线程,从而提高代码的可读性和性能。// 定义一个模拟异步操作的函数。// 定义一个异步函数。

LastedWhisper的博客 764

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 定时器js
下一篇: node安装jQuery
*初级小白*~
博客等级 码龄7年 24粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值