promise.race和promise .all的区别

let p1 = new Promise((resolve, reject) => {

    resolve('成功了')

  })


  let p2 = new Promise((resolve, reject) => {

    resolve('success')

  })


  let p3 = Promise.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)      // 失败了,打出 '失败'

  })

Promse.all在处理多个异步处理时非常有用,比如说一个页面上需要等两个或多个ajax的数据回来以后才正常显示,在此之前只显示loading图标。


  let wake = (time) => {

    return new Promise((resolve, reject) => {

      setTimeout(() => {

        resolve(`${time / 1000}秒后醒来`)

      }, time)

    })

  }


  let p1 = wake(3000)

  let p2 = wake(2000)


  Promise.all([p1, p2]).then((result) => {

    console.log(result)      // [ '3秒后醒来', '2秒后醒来' ]

  }).catch((error) => {

    console.log(error)

  })

顾名思义,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'

  })

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容