ES6新增的Promise

  1. 回调地狱:
    在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱。
    • 代码阅读性非常差
    • 浪费性能
    • 不方便维护
// 三十个不同请求,同时拿到所有的数据
    ajax("",function(res1){
        ajax("",function(res2){
            ajax("",function(res3){
                ajax("",function(res4){
                    ajax("",function(res5){
                        ajax("",function(res6){
                            // 1,2,3,4,5,6
                            console.log(res1,res2.....)
                        })
                   })
                })
            })
        })
    })
  1. Promise: 中文 承诺
    1. ES6中新增的本地对象
    2. 用来优化异步程序的回调地狱问题
    3. 自身存在三个状态:正在进行时,已完成,已失败
    4. 基础语法
 var p = new Promise(function(resolve,reject){
            // 已完成状态确定
            resolve();
            // 已失败状态确定
            reject();
        })
        p.then(function(){
            console.log("已完成");
        }).catch(function(){
            console.log("已失败")
        })

3.在ajax中的使用

function ajax(){
		//resolve 函数:内部定义成功时我们调用的函数 value => {}
  	//reject 函数:内部定义失败时我们调用的函数 reason => {}
  	
        return new Promise(function(resolve,reject){
            // 开启异步的程序
            // 异步程序执行完毕,得到状态后,根据状态执行已完成或已失败
                // 已完成状态确定
                resolve();
                // 已失败状态确定
                reject();
        })
    }
    ajax().then(()=>{}).catch(()=>{})
    
	//then方法: (resolved, rejected) => {}
 	//onResolved函数: 成功的回调函数  (value) => {}
	//onRejected函数: 失败的回调函数 (reason) => {}
	//指定用于得到成功value的成功回调和用于得到失败reason的失败回调
	//返回一个新的promise对象

//catch方法: (rejected) => {}
//rejected函数: 失败的回调函数 (error) => {}




  1. promise的方法
    1. 实例的方法
      • var p = new Promise(()=>{})
      • p.then()
      • p.catch()
    2. 构造函数的方法
      • Promise.all([p1,p2,p3]); 返回一个新的promise, 只有所有的promise都成功才成功, 只要有一个失败了就直接失败
      • Promise.race([p1,p2,p3]); 返回一个新的promise, 第一个完成的promise的结果状态就是最终的结果状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值