promise的使用,和考点

Promise作为JavaScript中处理异步操作的重要工具,常在面试中被提及。本文总结了Promise的三种状态(pending、resolved、rejected)及其转换规则,以及.then()、.catch()和.all()的用法。.then()和.catch()会返回新的resolved状态的Promise,而Promise.all()则用于并发请求,其结果顺序与输入顺序一致,且只要有一个Promise失败,整体就会失败。了解这些,能更好地应对复杂的异步场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

promise可以说是解决回调地狱的神奇。面试也经常被问到。今天总结一下。
1、三种状态:pending resolved rejected.
状态的表现:
①、pending状态的promise 不会触发 then和catch的回调;
②、promise状态为resolved 会立即触发 then的回调;
③、promise状态为rejected 会立即触发 catch的回调;
④、.then((res) => {}) 默认会返回一个 resolved状态的promis 触发后面的 .then() 回调;
⑤、.catch((err) => {}) 默认会返回一个 resolved状态的promis 触发后面的 .then() 回调;
⑥、状态改变只能从 pending —> resolved 或者 pending —> rejected 没有其他的改变形式。
2、三个常用api: .then() .catch() .all()
.then( (res) => {})是返回成功的回调,回调参数res是返回成功的结果;
.catch( (err) => {})是返回失败的回调,回调参数err是返回的失败结果。
.all(p1,p2,…)是用于并发请求的,参数是一个个的promis对象
Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一致的,即p1的结果在前,即便p1的结果获取的比p2要晚。这带来了一个绝大的好处:在前端开发请求数据的过程中,偶尔会遇到发送多个请求并根据请求顺序获取和使用数据的场景,使用Promise.all毫无疑问可以解决这个问题。
Promise.all(iterable) 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise
都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve);如果参数中 promise
有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise 的结果。

题目是什么以及为什么在面试中需要掌握Promise? 在面试中,关于Promise的面试题目可以涉及Promise的基本概念、使用方法原理等方面的内容。例如,可以要求解析一段Promise的代码,或者要求描述Promise的执行顺序特性等。通过这些面试题目,面试官可以了解面试者对Promise的理解程度应用能力,进而评估其在异步编程方面的能力经验。 面试中需要掌握Promise的原因主要有以下几点: 1. 异步编程是现代前端开发中非常重要的一部分,Promise是一种用于处理异步操作的机制,能够更好地处理回调地狱问题提高代码的可读性。 2. Promise是JavaScript中的关键特性之一,在使用现代前端框架如ReactAngular时,几乎无法避免使用Promise。因此,掌握Promise能够更好地理解应用这些框架。 3. Promise是面试中常见的考点之一,掌握Promise能够更好地准备面试,展现自己的技术能力经验。 综上所述,掌握Promise对于面试来说是非常重要的,它能够展示你对异步编程的理解应用能力,并且能够提升你在面试中的竞争力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【异步系列三】10道 Promise 面试题彻底理解 Promise 异步执行顺序](https://blog.csdn.net/qq_41131745/article/details/127004662)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [10 个 JavaScript Promise 的面试题](https://blog.csdn.net/snsHL9db69ccu1aIKl9r/article/details/125454133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值