鸿蒙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

相关文章

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt