鸿蒙Promise是什么?怎么用?面试遇到如何回答?Promise静态方法有那些?

news2024/9/21 12:46:13

#什么是Promise?

Promise是用来管理异步操作的对象,可以获取成功(或失败)的结果

#Promise的状态?

Promise 必然处于 3 种状态中的某一种,调用resolve,reject 的本质就是更改他的状态
3 种状态:
1. 待定(pending): 初始状态,既没有被兑现(resolve),也没有被拒绝(reject)
2. 已兑现(fullfilled): 意味着操作成功完成
3. 已拒绝(rejected): 意味着操作失败

特点:

1.promise对象的状态一旦改变,不可逆(只能改变一次)

2.可以通过Promise.resolve()静态方法直接得到一个成功状态的promise对象

————特点是:只会触发 .then()不会触发.catch()

可以通过Promise.reject()静态方法直接得到一个失败状态的promise对象

————特点是:只会触发,catch()不会触发.then()

#链式编程 

##什么是链式编程?

链式编程允许将多个操作(如方法调用)链接在一起。链式编程通常是通过返回同一个类型的对象的方式来实现。
(在一个对象可以重复点出方法,这个方法返回同一个类型的对象)

##链式编程-基本使用

作用:Promise的链式编程是用来解决【回调函数地狱】的一种写法,让多层嵌套的代码变得可读性强

语法:promise对象.then().catch()

场景:

/*
 * 特点:
 * 1. 后面的 .then是可以接受到前面.then返回的成功状态下的值
 * 2. 后面的.catch是可以接受前面.then中返回的失败状态下的值
 * 3. 一旦在某个.then里面返回的是一个失败状态的Pormise,则直接跳过其他
 * 的.then进入到.catch执行
 *
 * 总结:
 * 写法: p.then().then()....catch()
 * 注意点:如果 后一个.then需要用到前一个.then中的结果,需要在前一个
 * .then中 显示return一下
 * */



#Promise的静态方法

Promise的静态方法有5个

其中reslove()与reject()是返回成功或失败的结果;promise.race 返回最快的结果;promise.all全部执行,一旦遇到失败就终止;promise.allSettled 全部执行,不管遇到失败都全部执行

##Promise.race()

什么是Promise.race()

Promise.race()方法用于处理一组异步操作,并返回第一个完成的异步操作的结果

race方法:可以执行一组异步对象
注意点:最快的那个异步对象如果是成功状态,则使用.then()来接受结果,否则使用.catch()来接收结果

应用场景:多个服务器提供相同的数据,但响应时间不同,你想要最快的那个服务器给你响应数据

##Promise.all()

是什么:‌‌Promise.all方法用于处理多个Promise实例,如果所有Promise实例都成功完成,将所有成功的结果作为一个数组返回,如果任何一个Promise实例失败,返回第一个失败的Promise实例的原因

/*
          * 总结:
          * Promise.all的作用是?
          *   执行一组p对象,如果所有成功则返回所有的执行结果(数组类型)
          * .them() 接收成功的结果
          * 如果有一个执行失败,直接返回失败的数据 (.catch来接收)
          *
          * 缺点:只要有一个失败了,其他的都拿不到数据
          * 场景:多个请求要么同时拿到成功的数据,要么一个不要
          * */


##Promise.allSettled()

全部执行,不管遇到失败都获取结果

使用.then来接收所有结果参数固定格式为:

#Promise面试

1.讲什么情况下回产生回调地狱?

多个接口请求之间时有依赖关系的   例如 市的接口以来于省这个接口的数据  区以来与市和省的接口数据

2.回调地狱写法有什么特点?

代码不好维护

.then(res=>{

        .then(res=>{

                .then(res=>{

                })

        })

})

3. 请讲一下promise链式编程时解决什么问题的?

Promise链式编程可以解决不好维护代码的问题,多个.then()之间时一个平级关系

.then(res=>{ return promise })

.then(res=>{})

.then(res=>{})

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

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

相关文章

Lazada商家必看:如何高效利用自养号进行产品测评

Lazada自养号测评技术是一种电商运营策略,通过卖家自己创建和管理买家账号,以模拟真实的买家行为(如浏览、收藏、加购和下单等),从而提高产品的排名、权重和销量。以下是对Lazada自养号测评技术的详细解析:…

一文搞懂 JavaScript 模块化规范:CommonJS、AMD、ES6 Module

🔥 个人主页:空白诗 文章目录 一、为什么需要模块化?二、早期的模块化标准2.1 CommonJS 规范2.1.1 CommonJS 简介2.1.2 CommonJS 的特性2.1.3 CommonJS 的使用示例2.1.4 CommonJS 可能出现的问题 2.2. AMD 规范2.2.1 AMD 简介2.2.2 AMD 的特性…

速度与激情:荣耀100 GT携第三代骁龙8来袭,性能爆表

在智能手机市场,荣耀品牌以其独特的设计理念和创新技术赢得了众多消费者的喜爱。 随着荣耀100 GT预计将在年底登场的消息曝光,这款作为荣耀90 GT迭代更新款的智能手机,无疑将成为市场上的一大亮点。从外观设计到性能配置,荣耀100…

小童(化名)的轻度自闭症之旅

在儿童的成长道路上,每位家长都期望自己的孩子能够健康快乐地成长。然而,当小童(化名)被诊断出患有轻度自闭症时,这个家庭仿佛踏上了一段不同寻常的旅程。 小童的轻度自闭症表现并不明显,但仔细观察&#x…

使用Dify搭建企业知识库聊天机器人

本文简介 在当今数字化时代,企业知识库的建设和维护对于提升工作效率和服务质量至关重要。AI聊天机器人作为知识库的交互界面,可以提供24/7的即时服务。 本文将介绍如何使用 Dify 这一工具快速搭建企业知识库聊天机器人,它可以当你企业的职…

为什么太极拳适合帕金森病患者进行锻炼?

为什么太极拳适合帕金森病患者进行锻炼? 太极拳是一种低强度、连贯性和平衡性要求较高的运动,它通过缓慢、柔和的动作和深长的呼吸来提高身体的协调性和灵活性。对于帕金森病患者来说,太极拳的这些特点使其成为一种非常适合的锻炼方式。 帕金…

UDP简单聊天室创建

目录 一. 服务端模块实现 二. 处理聊天消息模块实现 三. 调用服务端模块实现 四. 客户端模块实现 五. 效果展示 本文介绍了如何用UDP创建一个简单的聊天室。 一. 服务端模块实现 服务端仍然沿用我们前面的思想(高内聚低耦合)&#xf…

全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用

SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了W…

【AMD ROCm】windows 系统安装AMD ROCm步骤

windows 安装AMD ROCm 官方文章: https://rocm.docs.amd.com/en/docs-5.7.1/deploy/windows/quick_start.html 第一步先去下载HIP SDK 下载地址:https://www.amd.com/en/developer/rocm-hub/hip-sdk.html 目前windows上支持的显卡类型是这些&#xff0…

anygrap 使用笔记

graspness(https://github.com/graspnet/graspness_unofficial)官方没有提供权重文件。anygrasp-sdk (https://github.com/graspnet/anygrasp_sdk)提供了权重文件,但是需要申请license。 想体验下anygrasp的精度如何&…

css之雪碧图(精灵图)

听到雪碧图是不是跟我一样,啥?雪碧图?不知所以。 如果一张大图由许多小图构成,那么每张小图都需要进行网络请求,这样一来就会有很多请求,为了减少网络请求,雪碧图就出现了。 雪碧图&#xff0…

ChatGLM系列解析(三)—— ChatGLM3 —— AgentTuning

本文作为ChatGLM系列的第三篇,主要讲到ChatGLM3做出的优化与改进;也会补充ChatGLM2和ChatGLM3与GLM1的区别(这些内容在笔者的博客中确实存在遗漏)。 ChatGLM系列解析(一)—— ChatGLM开篇之作_chatglmforco…

Spring boot swagger 引入 以及后续使用 Knife4j 替换swagger

swagger配置 swagger 引入jar包 pom.xml 添加 对应的 swagger 信息 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency> <dependency>…

重头开始嵌入式第三十天(Linux系统编程 ip头)

目录 1.常用网络测试工具 1、telnet 远程登录工具&#xff0c;默认都是系统安装。 2、netstat 测试查看网络端口使用情况 3、ping 命令 测试网路的联通状况 4、arp 地址解析命令 5.1 wireshark >可视化界面 5.2 tcpdump 》命令行 >www.tcpdump.com 2.ip头 3…

【微信小程序】分包--独立分包

1. 什么是独立分包 独立分包本质上也是分包&#xff0c;只不过它比较特殊&#xff0c;可以独立于主包和其他分包而单独运行。 2. 独立分包和普通分包的区别 3. 独立分包的应用场景 4. 独立分包的配置方法 5. 引用原则

什么是PMP项目管理?PMP证书有什么用?

PMP&#xff08;Project Management Professional&#xff09;项目管理&#xff0c;简单来说&#xff0c;就是美国项目管理协会&#xff08;PMI&#xff09;颁发的一种项目管理资格认证。 它代表了项目管理领域的最高水平&#xff0c;是一种系统化的管理方法。PMP项目管理将项…

大模型有哪些评估指标?

1. 导入 你可能听说过A大模型比B大模型好&#xff0c;但你知道如何评估这些模型吗&#xff1f;在大模型领域&#xff0c;有许多指标可以帮助我们评估模型的性能。这些指标可以帮助我们了解模型的准确性、效率和可解释性。在本文中&#xff0c;我们将介绍一些常用的指标&#x…

卡尔曼滤波实现一阶马尔可夫形式的滤波|价格滤波|MATLAB代码|无需下载,复制后即可运行

一节马尔可夫 一阶马尔可夫噪声是一种具有马尔可夫性质的随机过程。在这种噪声中,当前时刻的状态只与前一时刻的状态有关,与更早的状态无关。 一阶马尔可夫噪声可以用一个状态转移矩阵表示,矩阵的每个元素表示从一个状态转移到另一个状态的概率。 滤波模型 状态量的迭代…

CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版

CleanClip 是一款专为 Mac 用户设计的强大剪贴板历史管理工具。它能够自动保存您复制的内容,让您轻松访问和管理剪贴板历史记录,大大提高工作效率。 下载地址&#xff1a;CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版 主要特点 自动保存剪贴板历史 CleanClip 会自…

作为HR如何做候选人的背景调查

如果HR想更进一步解决背景调查难题&#xff0c;可以先建立一套规范的调查流程&#xff0c;这样能够大大节约时间。在这套流程中要包括明确调查的内容&#xff0c;比如个人学历&#xff0c;工作经历&#xff0c;资质证书等等&#xff0c;只要是和岗位招聘相关的信息都需要全面覆…