我有一个函数返回一个函数(一个异步.get调用) . 这里我在catch语句中返回一个空对象:

export function makeHttpStatsProvider(fisClientRoot, httpClient, selectedDate = null) {
    return async function(polygon, layerName) {
        const response = await httpClient.get(
         ///request logic
        }}).catch((e) => {
          return {}
        }).then((response) => {
          return {[layerName]: response.data[layerName][0].basicStats}
        })
    }
}

然后我有一个函数,它接受了这个承诺,并制作了一系列承诺:

export async function harvestMap(statsProvider, polygons, numBuckets = 5) {

    const arrayOfPromises = polygons.map(async (polygon) => {
      Object.assign({}, polygon, await statsProvider(polygon, 'EVI'))
    })

    return Promise.all(arrayOfPromises)
      .catch((err) => {
        console.log('a promise failed to resolve', err)
        return arrayOfPromises
      })
      .then((arrayOfPromises) => {
        return arrayOfPromises.sort((a, b) => a.EVI.mean - b.EVI.mean).map((polygon, index) => Object.assign({}, polygon, {
          rank: Math.floor(index * numBuckets / polygons.length)
        }))
      })

}

这里.catch语句console.log出错 . 但尽管如此,.then()语句中的arrayOfPromises仍然包含被拒绝的承诺 .

我想要实现的是在网络请求失败时返回自定义对象,稍后将其传递给Object.assign函数 . 这甚至是可能的还是我需要以不同的方式解决问题?