前言
AJAX的学习到这里就告一段落了,后面会做个小项目巩固之前学过的知识。后面会继续学习Node.js以及Git等知识。
一、概念
合并多个Promise对象,等待所有同时成功完成(或某一失败),做后续逻辑
二、语法
三、案例示例
需求:同时请求“北京”,“上海”,“广州”,“深圳”的天气并在网页上尽可能同时显示
代码如下:
<!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>