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

2024-09-02 15:44

本文主要是介绍鸿蒙Promise是什么?怎么用?面试遇到如何回答?Promise静态方法有那些?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#什么是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=>{})

这篇关于鸿蒙Promise是什么?怎么用?面试遇到如何回答?Promise静态方法有那些?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130380

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网