首页 > Web开发 > 详细

js----promise.all() promise.race()

时间:2019-02-19 11:31:28      阅读:179      评论:0      收藏:0      [点我收藏+]

promise.all()

可以将多个Promise实例包装成一个新的Promise实例。
同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值。
Promise.all([]).then().catch()获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一致的
只有所有的promise函数都返回成功状态,才会执行then方法
若有一个promise函数返回失败状态,则执行catch方法

使用场景:
  比如说一个页面上需要等两个或多个ajax的数据回来以后才正常显示,在此之前只显示loading图标。
  在前端开发请求数据的过程中,偶尔会遇到发送多个请求并根据请求顺序获取和使用数据的场景,使用Promise.all毫无疑问可以解决这个问题。


let p1 = new Promise((resolve, reject) => { resolve(‘成功了‘) }) let p2 = new Promise((resolve, reject) => { resolve(‘success‘) }) let p3 = Promse.reject(‘失败‘) Promise.all([p1, p2]).then((result) => { console.log(result) //[‘成功了‘, ‘success‘] }).catch((error) => { console.log(error) }) Promise.all([p1,p3,p2]).then((result) => { console.log(result) }).catch((error) => { console.log(error) // 失败了,打出 ‘失败‘ })
Promise.race的使用
Promse.race就是赛跑的意思,
意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。
let p1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(‘success‘)
  },1000)
})

let p2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject(‘failed‘)
  }, 500)
})

Promise.race([p1, p2]).then((result) => {
  console.log(result)
}).catch((error) => {
  console.log(error)  // 打开的是 ‘failed‘
})

 

js----promise.all() promise.race()

原文:https://www.cnblogs.com/SRH151219/p/10399841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!