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()用法差不多,只不过核心逻辑不一样,如同时发起多个异步请求,谁先完成请求返回数据就用谁

 

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

 

 

### ES6Promise新特性和使用方法 Promise 是一种用于处理异步操作的对象,它表示一个异步操作的最终完成(或失败)及其结果值。通过 `then` 方法可以注册回调函数来接收操作的结果。 ```javascript // 创建一个新的 Promise 实例 const promise = new Promise((resolve, reject) => { setTimeout(() => resolve('成功'), 1000); }); promise.then(result => console.log(result)); // 输出 "成功" ``` 当浏览器不支持原生 Promises 时,可以通过引入第三方库如 es6-promise-polyfill 来提供兼容性[^2]。 ### ES6 中 Proxy 的新特性和使用方法 Proxy 提供了一种方式去拦截并重新定义基本的操作行为,比如属性查找、赋值、枚举、函数调用等等。这使得开发者可以在访问目标对象之前执行自定义逻辑。 下面是一个简单的例子展示了如何创建一个带有 getter 拦截器的代理: ```javascript const obj = { a: 1 }; const handler = { get(target, propertyKey){ if (propertyKey === 'a') return target[propertyKey]; else return undefined; } }; const proxyObj = new Proxy(obj, handler); console.log(proxyObj.a); // 返回 1 console.log(proxyObj.b); // 返回 undefined ``` 更进一步的例子显示了如何利用代理实现对不存在属性返回默认值的功能[^4]: ```javascript const originalObject = { key: 'value' }; const fallbackHandler = { get(target, name){ return name in target ? target[name] : 'default'; } }; const proxiedObject = new Proxy(originalObject, fallbackHandler); console.log(proxiedObject.key); // value console.log(proxiedObject.missing); // default ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值