JavaScript高级(十五)----promise.all

2024-03-22 1233阅读

温馨提示:这篇文章已超过367天没有更新,请注意相关的内容是否还可用!

 Promise.all方法使用场景

例如:用户点击按钮,会向服务器请求数据,但是数据分别是不同的后端接口获取的数据,需要展示在一个span中
如果用户还没请求完成 则span会显示加载中...
等待两个后端接口都返回了数据 才会将数据展示在span 中
   
      开始请求多组数据
      
   
    const btn = document.querySelector('.btn');
    const text = document.querySelector('.text');
    // 请求数据的接口1
    function getData1() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          return resolve('getData1')
        }, 1000)
      })
    }
    // 请求数据的接口2
    function getData2() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          return resolve('getData2')
        }, 3000)
      })
    }
    btn.addEventListener('click', async () => {
      // 如果用户还没请求完成 则span会显示加载中
      text.innerHTML = '加载中.....'
      try {
        const res1 = await getData1();
        const res2 = await getData2();
        Promise.all([res1, res2])
          // 如果向后端请求的数据 全部请求成功 则把数据渲染到页面上
          .then(res => {
            let strHtml = '';
            res.forEach(item => strHtml += item)
            text.innerHTML = strHtml;
          })
      } catch (err) {
        // 如果reject被执行 会到 catch里面来 .. 可以执行相应的代码
        text.innerHTML = `某个接口请求失败,数据无法渲染`;
        console.log('某一个后端接口请求失败', err)
      }
    })

Promise.all

JavaScript高级(十五)----promise.all
(图片来源网络,侵删)
  • 接收的是数组,得到的结果也是数组,并且一一对应,也可以理解为Promise.all照顾跑的最慢的,最慢的跑完才结束。
  • 只有当所有 Promise 实例都变成 fulfilled 状态,新 Promise 的状态才是 fulfilled 状态,返回所有 promise 实例的 resolve value 数组。
  • 如果有一个 Promise 实例状态是 rejected 状态,则新 Promise 的状态是 rejected,返回第一个 promise reject 的 reason。
  • 这样我们可以取到不同接口的所有数据。
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]