Pormise

Promise是一个构造函数

三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败),fulfilled和rejected都是由pending改变,一旦状态改变,就不会再变。

Pormise.race:

参数是数组:Pormise.race([])

用途:可在网络请求延迟使用做提示。

不管失败还是成功,谁先执行完成就返回谁

var p1 = new Promise(function(resolve,reject){
              setTimeout(function(){
                 resolve('执行操作1');
                },3000)

});

var p2 = new Promise(function(resolve,reject){
              setTimeout(function(){
                 resolve('执行操作2');
                },2000)

});

var p3 = new Promise(function(resolve,reject){
             setTimeout(function(){
                 resolve('执行操作3');
                },1000)

});
let pRace =  Promise.race([p1,p2,p3])
console.log(pRace)   //返回操作3 
//p1,p1,p3中任意一个,最新改变的状态就是pRace的返回值
Promise.race([]).then(value=>{}).catch(error=>{})

Pormise.all:

参数可以不是数组,但是必须是iterator

用途:等待多个请求成功的结果,再一起渲染页面

成功的返回值是一个数组

var p1 = new Promise(function(resolve,reject){
              resolve('操作1执行成功')
});

var p2 = new Promise(function(resolve,reject){
              reject('操作2执行失败')
});

var p3 = new Promise(function(resolve,reject){
              resolve('操作3执行成功')
});
let pAll =  Promise.all([p1,p2,p3])
console.log(pAll) //提示p2执行失败
pAll的状态由p1,p2,p3请求的状态决定,三个都是成功,才会成功。



如果任意一个失败,pAll的状态就是失败,如p2和p3都是失败,只返回p2的失败的结果
var p1 = new Promise(function(resolve,reject){
              resolve('操作1执行成功')
});

var p2 = new Promise(function(resolve,reject){
              reject('操作2执行成功')
}).catch(error =>console.log(error))

var p3 = new Promise(function(resolve,reject){
              resolve('操作3执行成功')
});
let pAll =  Promise.all([p1,p2,p3])
console.log(pAll) //[操作1执行成功,undefined,操作3执行成功]

pAll.then(value=>{
    //全部请求成功后。。。。。
    console.log(value) //[操作1执行成功,undefined,操作3执行成功]
}).catch(error=>
p2未做catch时,使用all,任何一个失败都会在此返回
console.log(error))
若p2单独设置了catch,那么p2是reject时,不会触发pAll的catch

获取当前url并重新加载

 location.replace(location.href)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值