es6新特性(四之Promise )

本文详细介绍了JavaScript中的Promise对象及其使用方法,包括resolve和reject的概念、如何使用then方法进行回调处理、Promise.all()和Promise.race()的功能及应用场景。

Promise

字面意思是承诺,但具体用法和场景呢

  • 一、首先了解Promise对象和Promise的调用,其中涉及到关键词resolve、reject、和then
  •  resolve和reject是函数里的参数翻译过来是解决和决绝,简单来理解即表示成功和失败的回调函数。
  •  Promise对象的调用方式需要用到then方法

 例如:

let p=new Promise(function(resolve,reject){
     
   $.ajax(
   {
      url:url,
      dataType:"json",
      success(arr)
      {
        resolve(arr);
      },
     error(err)
     { 
       reject(err);
     }     
   })
   
})

p.then(
function(res)//这个的函数就是resolve回调
{
  //成功时调用这里
},
function(res){//这个的函数就是reject回调
  //失败时调用这里
})

这便是Promise的运用,有可能你感觉不到这样做有什么好处,但他能避免回调

 

  • 二、Promise.all()
  • Promise.all可以同时处理多个Promise对象,当所有的对象方法都处理成功时,我们才算是成功!

    比如我们已经实例化好了两个Promise对象

Promise.all([
   p1,p2
]).then(function(){"所有操作都成功调这里"},function(){"哪怕有一个失败就调这里"})

  而在高版本的Jquery里,每个$.ajax都会返回一个promise对象,所以

Promise.all([
   $ajax({url:url1}),
   $ajax({url:url2}),
   $ajax({url:url3}),
]).then(function(arr){
  let [res1,res2,res3]=arr;//正好用解构赋值来接受每一个异步请求后获得的结果集
 //所有操作都成功调这里
},
function(){
   //哪怕有一个失败就调这里
})

 

  • 三、Promise.race() 了解一下即可,翻译为竞速

     和Promise.all()用法差不多,只不过核心逻辑不一样,如同时发起多个异步请求,谁先完成请求返回数据就用谁

 

总结:目前还是没有找到很实在的应用场景。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值