ES6中promise的使用

关于es6中promise的使用,我也看了其它的博客,但是这里要强调一点,promise是优化回调地狱的问题,并不是“解决”
Promise本身是一个对象,是一个构造函数,它需要传入一个参数,并且这个参数必须是函数;传入的这个函数本身包含两个参数resolve和reject,这两个参数也分别是函数
1.promise存在的三个状态,pedding(正在进行),reslove(已完成),reject(已失败)
2. 基础语法:

 var p = new Promise(function(resolve,reject){
            // 已完成状态确定
            resolve();
            // 已失败状态确定
            reject();
        })
        p.then(function(){
            console.log("已完成");
        }).catch(function(){
            console.log("已失败")
        })

其中then方法有两个参数一个是resolve,一个是reject,但由于Promise抛出错误具有冒泡性质,会一直向后传递,传到catch中,所以一般错误处理放在catch中,then中只处理成功。
补充:
3. promise的方法:
实例的方法:
– - var p = new Promise(()=>{})
– - p.then()
– - p.catch()
构造函数的方法:
– - Promise.all([p1,p2,p3]);// 所有promise的状态都是成功,才成功,只要有一个失败,就是失败
– - Promise.race([p1,p2,p3]);//只要有一个状态结束了,就执行对应的结果,不管是成功还是失败
4.最终使用:

 function ajax(){
        return new Promise(function(resolve,reject){
            // 开启异步的程序
            // 异步程序执行完毕,得到状态后,根据状态执行已完成或已失败
                // 已完成状态确定
                resolve();
                // 已失败状态确定
                reject();
        })
    }
    ajax().then(()=>{}).catch(()=>{})

什么时候使用呢?处理成功和失败,有回调且异步的时候就可以使用,以及操作异步的数据的时候也可以,操作异步数据也可以用ES8的async和await,当然也可以用回调解决,promise也有其他特性比如连缀

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值