必考:Promise、Promise.all、Promise.race 分别怎么用?

2020年3月11日
《每日一题系列🚀》
做者:王二狗
博客:掘金思否知乎简书CSDN
点赞再看,养成习惯,每日一题系列会一直更新下去,大家的支持是我持续分享的最大动力😘编程

Promise

Promise 是异步编程的一种解决方案,比传统的解决方案回调函数和事件更合理和更强大。segmentfault

有了Promise对象,就能够将异步操做以同步操做的流程表达出来,避免了层层嵌套的回调函数。promise

一个Promise的当前状态必须为如下三种状态中的一种:等待态(Pending)、执行态(Fulfilled)和拒绝态(Rejected),状态的改变只能是单向的,且变化后不可在改变。异步

一个Promise必须提供一个 then 方法以访问其当前值、终值和据因。异步编程

promise.then(onFulfilled, onRejected)回调函数只能执行一次,且返回 promise 对象函数

Promise的每一个操做返回的都是Promise对象,可支持链式调用。学习

经过 then 方法执行回调函数,Promise的回调函数是放在事件循环中的微队列。ui

Promise的具体用法以下(背代码):spa

function fn(){
     return new Promise((resolve, reject)=>{
         成功时调用 resolve(数据)
         失败时调用 reject(错误)
     })
 }
 fn().then(success1, fail1).then(success2, fail2)
复制代码

Promise.all

Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。.net

Promise.all([promise1, promise2]).then(success1, fail1)
复制代码

promise1promise2都成功才会调用success1

Promise.race

Promise.race()方法一样是将多个 Promise 实例,包装成一个新的 Promise 实例。

Promise.race([promise1, promise2]).then(success1, fail1)
复制代码

promise1promise2只要有一个成功就会调用success1

告诫本身,即便再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!

文章中若有不对的地方,欢迎小伙伴们多多指正。

谢谢你们~ 💘

相关文章
相关标签/搜索