合并多个 Promise 对象,等待所有同时成功完成(或某一个失败),做后续逻辑 语法:
< script>
const p = Promise. all ( [ Promise对象, Promise对象, ... ] )
p. then ( result => {
} ) . catch ( error => {
} )
</ script>
需求。同时请求:“北京”、“上海”、“广州”、“深圳”的天气并在网页尽可能同时显示 核心代码如下:
<! 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>
const bjPromise = axios ( { url : 'http://hmajax.itheima.net/api/weather' , params : { city : '110100' } } )
const shPromise = axios ( { url : 'http://hmajax.itheima.net/api/weather' , params : { city : '310100' } } )
const gzPromise = axios ( { url : 'http://hmajax.itheima.net/api/weather' , params : { city : '440100' } } )
const szPromise = axios ( { url : 'http://hmajax.itheima.net/api/weather' , params : { city : '440300' } } )
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>