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)
复制代码
promise1
和promise2
都成功才会调用success1
Promise.race
Promise.race()
方法一样是将多个 Promise
实例,包装成一个新的 Promise
实例。
Promise.race([promise1, promise2]).then(success1, fail1)
复制代码
promise1
和promise2
只要有一个成功就会调用success1
告诫本身,即便再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!
文章中若有不对的地方,欢迎小伙伴们多多指正。
谢谢你们~ 💘