博客
关于我
四. 几个Promise常用API的介绍与使用
阅读量:758 次
发布时间:2019-03-24

本文共 2199 字,大约阅读时间需要 7 分钟。

四. 几个常用API的介绍与使用

1. Promise构造函数:Promise(excutor){}

excutor函数接收两个回调:resolve和reject。resolve用于定义成功时要执行的函数,resolve中的函数接收成功的值;reject则用于定义失败时要执行的函数,reject中的函数接收失败的原因。

说明:excitor函数会立即被Promise执行,这意味着无论你是在同线程之外的操作(如网络请求),resolve和reject都会在执行器中被立即调用。

2. Promise.prototype.then方法:(onResolved, onRejected) ⇒ {}

onResolved函数接收成功的值;onRejected函数接收失败的原因。then方法返回一个新的Promise对象,允许将当前Promise的结果进行进一步处理。

说明:then方法的第二个参数可以省略,默认为undefined。如果未提供,则失败的情况会以特定方式处理。

3. Promise.prototype.catch方法:(onRejected) ⇒ {}

catch方法直接处理失败的情况。它是一个then方法的语法糖,等价于调用then时将第一个参数设为undefined。

说明:使用catch方法可以简化代码,更加专注于处理可能出现的错误。

4. Promise.resolve方法:(value) ⇒ {}

Promise.resolve接受一个值或另一个Promise对象。如果提供的是一个Promise,则返回该Promise;如果提供的是普通值,则会立即以成功状态处理该值。

说明:resolve方法可以将普通值包装成一个成功的Promise,或者将另一个Promise延续到当前Promise中。

5. Promise.reject方法:(reason) ⇒ {}

Promise.reject接受一个失败的原因。立即返回一个失败的Promise对象,失败原因是你提供的参数。

说明:reject方法通常用于处理异步操作中的错误情况,快速创建一个带有错误信息的失败Promise。

6. Promise.all方法:(promises) ⇒ {}

promise是一个包含多个Promise对象的数组。Promise.all的执行规则是:只有当所有的Promise都成功时,result才会是成员的值组成的数组。如果有任意一个Promise失败,then/catch的回调会收到相应的错误信息。

说明:Promise.all适用于处理多个并发操作的结果。它能够高效地处理大量的异步操作,因为它并不会等待任意一个操作完成,而是同时执行所有操作并快速取得结果。

7. Promise.race方法:(promises) ⇒ {}

Promise.race接受一个包含多个Promise的数组。它返回一个新的Promise,新的Promise将立即以第一个完成的Promise的状态为结果,无论是成功还是失败。

说明:race方法的主要用途是处理时间敏感性场景,比如网络请求超时处理。当多个请求同时发起时,Race方法可以及时返回第一个完成的结果。

实例

new Promise((resolve, reject) => {     setTimeout(() => {         resolve('成功的数据');         reject('失败的数据');     }, 1000) }).then(value => {     console.log('onResolved()1', value); }).catch(reason => {     console.log('onRejected()1', reason); })

const p1 = new Promise((resolve, reject) => {     resolve(1); }); const p2 = Promise.resolve(2); const p3 = Promise.reject(3);

p1.then(value => {     console.log(value); }); p2.then(value => {     console.log(value); }); p3.catch(reason => {     console.log(reason); });

const pAll = Promise.all([p1, p2]); pAll.then(values => {     console.log('all onResolved()', values); }, reason => {     console.log('all onRejected()', reason); });

const pRace = Promise.race([p1, p2, p3]); pRace.then(value => {     console.log('race onResolved()', value); }, reason => {     console.log('race onRejected()', reason); });

转载地址:http://chckk.baihongyu.com/

你可能感兴趣的文章
数据分析与处理方法
查看>>
分享下自己总结的Git常用命令
查看>>
AIGC在量子计算研究中的应用:算法优化提示词
查看>>
三种引流方法&案例分析
查看>>
打开有惊喜
查看>>
AUTOSAR_SWS_CANDriver4
查看>>
Spring高手系列2
查看>>
现代前端开发框架对比:React、Vue 和 Svelte 的选择指南
查看>>
跑男策划书
查看>>
程序员都看不懂的代码
查看>>
LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践
查看>>
404错误页面简约清新源码 非常好看
查看>>
404页面自动跳转源码
查看>>
458. 可怜的小猪
查看>>
matlab cross()函数叉乘 计算过程详解
查看>>
46:把数字翻译成字符串(动态规划)
查看>>
47:礼物的最大值(动态规划)
查看>>
49天精通Java,第28天,Java lambda表达式
查看>>
49天精通Java,第42天,java stream流详解,从集合遍历,看stream流操作
查看>>
500套精美Logo样机模板可直接套用、轻松制作炫酷logo
查看>>