Promise 的鏈式編程--異步編程的一種解決方案

29 篇文章 0 订阅

Promise 異步編程的一種解決方案,比傳統的解決方案(回調函數和事件)更合理強大

1.promise 構造函數接受一個函數作為參數,該函數有兩個參數resolve 和 reject (javascript 引擎提供)

2.resolve函數的作用是將promise 對象的狀態從未完成變成成功,即pending變成resolved,在異步操作成功時調用

3.reject函數的作用是將promise對象的狀態從未完成變成失敗,即pending變成rejected,在異步操作失敗時調用

廢話不多說,直接上代碼

<script>
  new Promise((resolve,reject)=>{
     setTimeout(()=>{ //第一次網絡請求
        resolve()
  },1000)   
}).then(()=>{
   console.log('hello');//第一次拿到結果
   console.log('hello');
   console.log('hello');
    return new Promise((resolve,reject)=>{
         setTimeout(()=>{ //第二次網絡請求
        resolve()
      },1000)   
        })
        }).then(()=>{
          console.log('helloVue');//第二次拿到結果
          console.log('helloVue');
          console.log('helloVue');
            return new Promise((resolve,reject)=>{
              setTimeout(()=>{ //第三次網絡請求
              resolve()
             },1000)   
          })
         })
        }).then(()=>{
            console.log('helloPython');
            console.log('helloPython');
        })

</script>

promise有三種狀態

pedding:等待中,初始狀態

fulfill:執行成功

reject:執行時發生錯誤

 

promise 鏈式調用

<script>
    new Promise((resolve,reject)=>{
         setTimeout(()=>{
               resolve('aaa')
        },1000)
      }).then(res=>{
          console.log(res,'first');
          return Promise resolve(res+'111')        
     })
     }).then(res=>{
         console.log(res,'second');
          return Promise resolve(res+'222') 
         })
        })
      }).then(res=>{
               console.log(res,'third');
         }

</script>

promise all 

<script>
 Promise.all([
     new Promise((resolve,reject)=>{
       $ajax({
           url:'url',
           success:function(data){
             resolve(data)
             }
            })
         })
       }),
       new Promise((resolve,reject)=>{
         $ajax({
          url:'url2',
          success:function(data){
            resolve(dataa)}
           })
         })
      ]).then(res=>{
        result[0]
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值