Skip to main content

手写 捕获所有数据状态

try catch

var getData1 = Promise.resolve('1')
var getData2 = Promise.reject('error')
var getData3 = Promise.resolve('3')

var getAllData = async function () {
try {
var data1 = await getData1()
} catch (e) {
var data1 = { code: -1, error: e }
}
try {
var data2 = await getData2()
} catch (e) {
var data2 = { code: -2, error: e }
}
try {
var data3 = await getData3()
} catch (e) {
var data3 = { code: -3, error: e }
}
return {
data1,
data2,
data3
}
}

var fn = async () => {
try {
var result = await getAllData()
console.log(result)
} catch (error) {
console.log(error)
}
}

fn()
{
data1: "1"
data2: {code: -2, error: "error"}
data3: "3"
}

Promise.allSettled

发音:Settled('setld')

var getData1 = Promise.resolve('1')
var getData2 = Promise.reject('error')
var getData3 = Promise.resolve('3')

const getAllData = [getData1, getData2, getData3]

Promise.allSettled(getAllData).then(values => console.log(values))
{
0: {status: "fulfilled", value: "1"}
1: {status: "rejected", reason: "error"}
2: {status: "fulfilled", value: "3"}
}