ES6新增语法(五)——Promise详解

本文详细介绍了ES6中Promise的用法,包括then方法的使用,多个回调函数的顺序执行,catch方法捕获异常,以及all和race方法在并发处理中的应用。通过实例展示了Promise在处理异步操作中的强大功能。

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

).catch((reason,data)=>{

console.log(“catch失败执行回调抛出原因”,reason)

})

then方法

======

then方法接收两个参数作为参数,第一个参数是Promise执行成功时的回调,第二个参数是Promise执行失败的回调,两个函数只会有一个被调用。

通过.then添加的回调函数,不论什么时候,都会被调用,而且可以添加多个回调函数,会一次按照顺序并且独立运行。

const p =new Promise((resolve,reject)=>{

resolve(“成功”)

})

p.then((res)=>{

console.log(res)//返回成功

},(err)=>{

console.log(err)

})

带有多个回调函数时

const p =new Promise((resolve,reject)=>{

resolve(1)

})

p.then((res1)=>{

console.log(‘res1’,res1) // 1

return res1 * 2;

}).then((res2)=>{

console.log(‘re 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 s2’,res2) //2

}).then((res3)=>{

console.log(‘res3’,res3) //undefined

return Promise.resolve(‘resolve’)

}).then(res4=>{

console.log(‘res4’,res4) //resolve

})

catch用法

=======

与Promise对象方法then并行的还有一个catch方法,用来捕获异常的,与try…catch类似,

const p1 = new Promise((resolve,reject)=>{

var num = Math.random()*10 ;//随机生成一个0-10的数字

console.log(“num”,num)

if(num > 5){

resolve(‘大于5’)

}else{

reject(“小于5”)

}

})

p1.then(res=>{

console.log(“res”,res) // res 大于5

}).catch(err=>{

console.log(“err”,err) // err 小于5

})

all方法

=====

all方法表示所有的异步操作完成后才执行回调,返回结果,返回的数据是个数组,多个请求返回的数据组合。与then方法同级。

使用语法:Promise.all([ p,p1,p2… ]).then()

使用实例如下:

const p1 = new Promise((resolve,reject)=>{

resolve({

name:‘倩倩’

})

})

const p2 = new Promise((resolve,reject)=>{

resolve([‘a’,‘b’])

})

const p3 = new Promise((resolve,reject)=>{

resolve(‘二傻子’)

})

Promise.all([p1,p2,p3]).then(res=>{

console.log(res)//[{name:‘倩倩’}, [‘a’,‘b’], “二傻子”]

})

race方法

======

all是等所有的异步操作都执行完成了再执行回调,而race方法是相反的,只要有一个执行完成,不论结果是成功还是失败,都开始执行回调,其余的不会再进入race的回调。返回的数据取决于最早执行完毕返回的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值