编辑代码

let p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve(111)
    }, 1000)
})

let p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        reject(222)
    }, 2000)
})

Promise.allSettled([p1, p2]).then(res => {
    console.log(res)
})

myAllSettled([p1,p2]).then(res => {
    console.log(res)
})

function myAllSettled(list) {
    let len = list.length
    let results = new Array(len)
    let count = 0

    return new Promise(resolve => {
        list.forEach(p => {
            p.then(res => {
                let obj = {
                    status: 'fulfilled',
                    value: res
                }
                results.push(obj)
                
                count++
                if(count === len) {
                    resolve(results)
                }
            }, err => {
                let obj = {
                    status: 'rejected',
                    reason: err
                }
                results.push(obj)
                count++
                if(count === len) {
                    resolve(results)
                }
            })
        })
    })
}