博客
关于我
四. 几个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/

你可能感兴趣的文章
(转)SQLServer全局变量
查看>>
(转)tomcat7.0 manager app和host manager web管理
查看>>
(转)【英雄会即时报道】五大CTO畅谈软件公司如何招聘技术人才
查看>>
(转)使用公用表表达式的递归查询(SQLSERVER2005)
查看>>
(转)在CListView列表视图中添加右键菜单的方法
查看>>
(转)考虑错误情况
查看>>
++b&&a--运算结果解析
查看>>
.Net(C#)实现异步编程
查看>>
.Net中webBrowser控件JS交互
查看>>
.Net中webBrowser控件指定IE版本
查看>>
0-1背包问题:贪心算法与动态规划的比较
查看>>
C++ switch混淆
查看>>
02-docker系列-镜像分类以及操作(导入、导出、删除)
查看>>
02-Docker镜像分类及操作秘籍,轻松掌握导出、导入、删除
查看>>
03-docker容器的基本操作
查看>>
03-docker系列-docker容器的基本操作
查看>>
04-docker-commit构建自定义镜像
查看>>
04-docker系列-commit构建自定义镜像
查看>>
05-docker系列-使用dockerfile构建镜像
查看>>
05-如何通过Dockerfile实现高效的应用容器化?
查看>>