jsES6pormise的使用

保持对代码的热爱并保持怀疑态度

什么是pormise?

Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。
自身存在三个状态:正在进行时,已完成,已失败
优化了异步程序的回调地狱问题。

什么是回调地狱?

看代码

     ajax("",function(res1){
     ajax("",function(res2){
         ajax("",function(res3){
             ajax("",function(res4){
                 ajax("",function(res5){
                   ajax("",function(res6){
                         // 1,2,3,4,5,6
                     })
                 })
             })
        })
     })
 })

由此得出:回调地狱是在一个异步的回调函数中,开启另一个异步,持续开启下去。
缺点:

  • 浪费性能
  • 不方便维护
  • 代码丑

pormise基础语法

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

对应到ajax的里的修改

  function ajax(){
       return new Promise(function(resolve,reject){
           // 开启异步的程序
           // 异步程序执行完毕,得到状态后,根据状态执行已完成或已失败
               // 已完成状态确定
               resolve();
               // 已失败状态确定
               reject();
       })
   }
   ajax().then(()=>{}).catch(()=>{})
promise的方法
  • 实例的方法
    • var p = new Promise((resolve,reject)=>{})
    • p.then()
    • p.catch()
  • 构造函数的方法
    • Promise.all([p1,p2,p3]);
      Promse.all在处理多个异步处理时非常有用,比如说一个页面上需要等两个或多个ajax的数据回来以后才正常显示,在此之前只显示loading图标。

    • Promise.race([p1,p2,p3]);
      顾名思义,Promse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

划水的乌贼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值