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

相关文章

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20