Promise的运用了解

promise:是异步编程的一种解决方案,对象的状态不受外界影响。Promise对象代表 一个一部操作
    语法:
        let app=200;
        let p1=new promise(function(resolve,reject){            //这里function函数中的两个参数是两个状态条件下才可执行,已完成状态执行第一个参数的回调函数。已失败状态执行第二个回调函数。
            if(app==200){                            //这里的if为判断状态。
                resolve("成功")                                //resolve(此处可以传入需要调用的函数)
            }else{
                reject("失败")                                //reject(此处可以传入需要调用的函数)
            }
        })
    
    有三种状态:
        pending(进行中)、fulfilled(已成功)和rejected(已失败)

    两种变化:
        pending(进行中)---->fulfilled(已成功)
        pending(进行中)---->rejected(已失败)

    一旦状态发生改变,就不会在变,任何时候都可以得到这个结果,
    避免层层嵌套的回调函数。此外,promise对象提供统一的接口,是的控制一部操作更加容易。

    缺点:
        1、无法取消promise,一旦新建他就会立即执行,无法中午取消。
        2、如果不设置回调函数,promise 内部抛出的错误,不会反应到外部。
        3、当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
    
    原型上方法:
        1、then()    
            语法:
                p1.then(
                    res=>{                        //已完成状态执行res回调函数,
                        console.log("helloy")
                    },
                    err=>{                        //已失败状态执行err回调函数
                        console.log("No!!!")
                    }
                )
        2、catch()
            语法:
                p1.then(
                    res=>{                        //已完成状态执行res回调函数,
                        console.log("helloy")
                    },
                    err=>{                        //已失败状态执行err回调函数
                        console.log("No!!!")
                    }
                ).catch(err=>{                        //断网的时候会进入catch中。catch为处理报错
                    console.log("No!!!",err)
                })

        3、finally()
            语法:
                p1.then(
                    res=>{                        //已完成状态执行res回调函数,
                        console.log("helloy")
                    },
                    err=>{                        //已失败状态执行err回调函数
                        console.log("No!!!")
                    }
                ).catch(err=>{                        //断网的时候会进入catch中。
                    console.log("No!!!",err)
                }).finally(param=>{                    //兜底操作--无论代码执行到何处报错,最后都将回到finally中
                    console.log("无论代码执行到何处报错,最后都将回到finally中")
                })

    静态方法:
        1、reject
        2、resolve
    
        语法:
            构造对象.方法()            //即可使用。


    reject和catch的区别:
        reject是用来抛出异常,catch是用来处理异常
        reject是promise构造函数的方法,而catch是promise 实例的方法
        reject后的东西,一定会进入 then 中的第二个回调,如果then中没有写第二个回调函数,则进入catch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值