这篇文章发布于 2026年03月18日,星期三,07:09。阅读 ? 次,? 条评论
全部成功才 resolve,有一个失败就 reject,返回结果顺序和输入顺序一致
Promise.myAll = function (promises) {
return new Promise((resolve, reject) => {
const result = []
let count = 0
if (promises.length == 0) {
return resolve([])
}
promises.forEach((p, index) => {
Promise.resolve(p).then(value => {
result[index] = value
count++
if (count == promises.length) {
resolve(result)
}
}, reject)
})
})
}不会 reject,返回所有结果(成功/失败都有)
Promise.myAllSettled = function (promises) {
return new Promise(resolve => {
const result = []
let count = 0
if (promises.length == 0) {
return resolve
谁先完成用谁(成功或失败)
Promise.myRace = function (promises) {
return new Promise((resolve, reject) => {
promises.forEach(p => {
Promise.resolve(p).then(resolve, reject
只要有一个成功就 resolve,全部失败才 reject(返回 AggregateError)
Promise.myAny = function (promises) {
return new Promise((resolve, reject) => {
const errors = []
let count = 0
if (promises.length == 0)