const f1 = new Promise(function (resolve, reject) {
resolve(佳佳)
})
const f2 = new Promise(function (resolve, reject) {
reject(要)
})
const f3 = new Promise(function (resolve, reject) {
resolve(自律)
})
const f4 = Promise.all([f1, f2, f3])
f4.then(function (value) {
console.log(value, ..成功)
}).catch(function (error) {
console.log(error, ...失败) // 要
})
// 若f2 返回成功,那么这个value就返回一个数组["wo", "ai", "ni"],但是f2返回的值被拒绝了,那么方法所返回的 Promise 就会立刻被 拒绝,而不必等待其他的 Promise 结束
const f5 = new Promise(function (resolve, reject) {
setTimeout(() => {
resolve(佳佳)
},100)
})
const f6 = new Promise(function (resolve, reject) {
reject(要)
})
const f7 = new Promise(function (resolve, reject) {
resolve(自律)
})
const f8 = Promise.race([f5, f6, f7])
f8.then(function (success) {
console.log(success, ..success)
}).catch(function (error) {
console.log(error, ...失败) // 要
})
// Promise.race([f5, f6, f7]) 调用顺序是 5,6,7,按说应该先执行f5,但是在f5执行的时候加了一个延时,这样他会加入到异步队列去执行,这样执行到f6到时候,返回的值被拒绝了,那么返回值就是这个被拒绝的值,
// all和race区别:
// race 翻译过来就是赛跑的意思,意味着Promise.race([f2, f1, f3]),这里面哪个参数执行的快,就返回哪一个,它不会在意返回的结果
// all 成功的时候返回一个成功数组,只要有一个失败,则返回最先被reject失败状态的值