promiss个人理解

关于Promise的个人理解
1.promise是一个异步处理数据的回调函数
2.promise目前有5个相关函数:.resolve() .reject() .all() .catch() .race() .then()
resolve和setTimeout()的区别,resolve是本轮‘事件循环’中执行,setTime()在下一轮‘事件循环中执行’。
请参考浏览器DOM渲染流程说起 js,html,css rander树
由于JS解析器读取函数的机制问题,所以想要有序的执行异步回调须用到promise.all()如:
let p1 = new Promise((resolve,reject)=>{
resolve(1) // 等待回调丢到then
})
let p2 = promise.resolve(2) // 直接丢参到then()
p1.then(res=>{
console.log(res) // 1
return p2
}).then(res=>{
console.log(res) // 2
}).catch(err=>{
console.log(err)
})
then()可以做有序排序。但如果出现了错误的情况,如P1出现了错误,P2将无法执行。P1错误需用reject()丢到catch()
all()做的有序排序。如:
promise.all([p1,p2]).then(res=>{
console.log([‘1’,‘2’])
}).catch(err=>{
console.log(err)
})
先处理p1,再处理p2,不管P1有没有错误,都会执行p2.错误将被丢到catch()中,有错优先处理错误。

只使用.then()的原理可以优化性能。但代码看起来有点乱。需二次封装
all().then()看起来比较整洁。
promise.all([p1,p2,p3]) 做有序,得所有结果才
promise.race([p1,p2,p3]) 谁快用谁,慢的最后用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值