image.png
    关于promise是这样的一个故事,女人给了男人承诺,情人节那天会为男人怀一个孩子,这个承诺是这样的:

    1. return new Promise((resolve,reject)=>{...})

    这个promise只会导致两种结果:

    • 成功解决了承诺,也就是resolve
    • 失败拒绝了承诺,也就是reject

    因为这个承诺不是马上就能知道结果的,过一会儿才能知道,所以promise其实是回调函数的升级版。当任务需要比较长时间处理时,promise就能进行异步的处理,防止阻塞

    怀孕这件事成功没有只有女人知道,需要她告诉男人,成功的话她就叫男人“孩子他爹”,失败的话她就叫男人“老公~”

    1. function fn(){
    2. return new Promise((resolve, reject)=>{
    3. 成功时调用 resolve(value)
    4. 失败时调用 reject(reason)
    5. })
    6. }

    现在轮到女人给男人公布结果了,成功的话女人就用”then”来表示:“情人节到了”然后”我就怀孕啦!”直接用”then”表示成功;失败的话女人会用”catch”表示,因为她会哭着“抓住”男人,叫声老公~让他心软,这里用”catch”捕获失败;不管是成功还是失败,最终他们都结婚了,于是用”finally”表示结尾

    上面的过程用代码演示如下:

    1. const isPregnant = true;//true or false
    2. const promise = new Promise((resolve,reject)=>{
    3. if(isPregnant){
    4. resolve('孩子他爹')
    5. }else{
    6. reject('老公~')
    7. }
    8. })
    9. promise
    10. .then(name=>{
    11. console.log(`男人成为了${name}`)
    12. })
    13. .catch(name=>{
    14. console.log(`男人成为了${name}`)
    15. })
    16. .finally(()=>{
    17. console.log(`男人和女人最终结婚啦!`)
    18. })