Promise

Promise

作用:解决异步回调问题
传统方式:大部分用回调函数,事件
语法:

    let a = 10;
    let promise = new Promise(function(resolve,reject){
        //resolve 成功时调用
        //reject 失败时调用
        if(a == 10){
            resolve('成功')
        }else{
            reject('失败')
        }
    })
    // promise.then(success,fail)
    promise.then(res =>{
        console.log(res)
    },rej =>{
        console.log(rej)
    })
     //成功

简洁用法:可以捕获错误(catch)

new Promise().then().catch(err => {})

** Promise.resolve(‘aaa’) : 将现有的东西,转成一个promise对象,resolve状态(成功状态)**
等价于:

new Promise(resolve =>{
         resolve('aaa');
     })

** Promise.reject(‘bbb’) : 将现有的东西,转成一个promise对象,reject状态(失败状态)**
等价于:

new Promise(reject =>{
         reject('aaa');
     })

** Promise.all(p1,p2,p3…) : 将promise打包,扔到一个数组里,打包完还是一个promise对象**
注意:必须确保p1,p2,p3等promise对象都是resolve状态
当 p1, p2, p3 状态都 Resolved 的时候,p 的状态才会 Resolved;只要有一个实例 Rejected ,此时第一个被 Rejected 的实例的返回值就会传递给 P 的回调函数。
应用场景:假设有一个接口,需要其它两个接口的数据作为参数,此时就要等那两个接口完成后才能执行请求

  let p1 = Promise.resolve('aaa');
     let p2 = Promise.resolve('bbb');
     let p3 = Promise.resolve('ccc');
   let p =  Promise.all([p1,p2,p3]).then(res => {
         console.log(res);//Array(3) ["aaa", "bbb", "ccc"]
     })

** Promise.received(p1,p2,p3…) : 将promise打包,扔到一个数组里,打包完还是一个promise对象**
和Promise.all 类似,区别是 Promise.race() 只要监听到其中某一个实例改变状态,它的状态就跟着改变,并将那个改变状态实例的返回值传递给回调函数。

应用场景: 可以通过多个异步任务来进行容错处理,多个接口返回同样的数据,只要有一个接口生效返回数据即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值