前言

AJAX的学习到这里就告一段落了,后面会做个小项目巩固之前学过的知识。后面会继续学习Node.js以及Git等知识。

一、概念

合并多个Promise对象,等待所有同时成功完成(或某一失败),做后续逻辑Promise.all静态方法_html

二、语法

Promise.all静态方法_ios_02

三、案例示例

需求:同时请求“北京”,“上海”,“广州”,“深圳”的天气并在网页上尽可能同时显示

Promise.all静态方法_.net_03

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Promise的all方法</title>
</head>

<body>
  <ul class="my-ul"></ul>
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    /**
     * 目标:掌握Promise的all方法作用,和使用场景
     * 业务:当我需要同一时间显示多个请求的结果时,就要把多请求合并
     * 例如:默认显示"北京", "上海", "广州", "深圳"的天气在首页查看
     * code:
     * 北京-110100
     * 上海-310100
     * 广州-440100
     * 深圳-440300
    */
	 //请求城市天气,得到Promise对象
    const bjPromise = axios({ url: 'https://hmajax.itheima.net/api/weather', params: { city: '110100' } })
    const shPromise = axios({ url: 'https://hmajax.itheima.net/api/weather', params: { city: '310100' } })
    const gzPromise = axios({ url: 'https://hmajax.itheima.net/api/weather', params: { city: '440100' } })
    const szPromise = axios({ url: 'https://hmajax.itheima.net/api/weather', params: { city: '440300' } })

    //使用Promise.all,合并多个Promise对象
    const p = Promise.all([bjPromise, shPromise, gzPromise, szPromise])
    p.then(result => {
      console.log(result)
      const htmlStr = result.map(item => {
        return `<li>${item.data.data.area} --- ${item.data.data.weather}</li>`
      }).join('')
      document.querySelector('.my-ul').innerHTML = htmlStr
    }).catch(error => {
      console.dir(error)
    })
  </script>
</body>

</html>

Promise.all静态方法_ios_04