共荣期约 ----Promise.all()
<script>
~function PromiseAll(){
Promise.all(
[
Promise.resolve(100),
56,
new Promise(
(resolve,reject) =>{
// 这是定时器的使用了第三个参数的写法
// setTimeout(resolve,3000,'你还是去小孩那桌吧!')
// 正规写法
setTimeout(
()=> reject("你还是去小孩那桌吧!"),3000
)
}
)
]
).then(data =>console.log(data))
.catch(err =>console.log('err='+err))
}()
</script>
- 总结: 输入和输出都是数组 Promise.all()这个调度特点:全部是履约状态时(等全部履约成功时,输出一个数组内容),若不全是履约状态时,则返回失约内容(不会输出履约内容)
全部落地尘埃---Promise.allSettled()
<script>
~function PromiseAllSettled() {
Promise.allSettled(
[
Promise.resolve(100),
56,
new Promise(
(resolve, reject) => {
// 这是定时器的使用了第三个参数的写法
// setTimeout(resolve,3000,'你还是去小孩那桌吧!')
// 正规写法(两个参数)
setTimeout(
() => reject("你还是去小孩那桌吧!"), 3000
)
}
)
]
)
.then(data => console.log(data))
.catch(err => console.log('err=' + err))
// 查询出来的结果
// (3)[{… }, {… }, {… }]
// 0: { status: 'fulfilled', value: 100 }
// 1: { status: 'fulfilled', value: 56 }
// 2: { status: 'rejected', reason: '你还是去小孩那桌吧!' }
// length: 3
// [[Prototype]]: Array(0)
// 这是查询状态
// .then(data => data.forEach(data =>console.log(data.status)))
}()
</script>
- 总结:输入/输出都是数组形式 ,将所有的promise的值都输出(不管是履约还是毁约)
谁是promise的第一个值就输出内容
<script>
~function PromiseRace(){
Promise.race(
[
new Promise(
(resolve,reject)=>{
setTimeout(
()=>resolve(10),10000
)
}
),
new Promise(
(resolve,reject)=>{
setTimeout(
()=>reject(100),1000
)
}
)
]
).then(
data =>console.log(data)//Uncaught (in promise) 100
)
}()
</script>
- 总结:输入的是数组,输出的失约或履约的内容(谁的为promise的值就输出那个例如:10000>1000,所以输出的是失约的内容)