关于promise是这样的一个故事,女人给了男人承诺,情人节那天会为男人怀一个孩子,这个承诺是这样的:
return new Promise((resolve,reject)=>{...})
这个promise只会导致两种结果:
- 成功解决了承诺,也就是resolve
- 失败拒绝了承诺,也就是reject
因为这个承诺不是马上就能知道结果的,过一会儿才能知道,所以promise其实是回调函数的升级版。当任务需要比较长时间处理时,promise就能进行异步的处理,防止阻塞
怀孕这件事成功没有只有女人知道,需要她告诉男人,成功的话她就叫男人“孩子他爹”,失败的话她就叫男人“老公~”
function fn(){
return new Promise((resolve, reject)=>{
成功时调用 resolve(value)
失败时调用 reject(reason)
})
}
现在轮到女人给男人公布结果了,成功的话女人就用”then”来表示:“情人节到了”然后”我就怀孕啦!”直接用”then”表示成功;失败的话女人会用”catch”表示,因为她会哭着“抓住”男人,叫声老公~让他心软,这里用”catch”捕获失败;不管是成功还是失败,最终他们都结婚了,于是用”finally”表示结尾
上面的过程用代码演示如下:
const isPregnant = true;//true or false
const promise = new Promise((resolve,reject)=>{
if(isPregnant){
resolve('孩子他爹')
}else{
reject('老公~')
}
})
promise
.then(name=>{
console.log(`男人成为了${name}`)
})
.catch(name=>{
console.log(`男人成为了${name}`)
})
.finally(()=>{
console.log(`男人和女人最终结婚啦!`)
})