如果通过Promise.all处理数据时发生任何错误,则在catch语句中捕获单个记录

时间:2019-05-24 05:00:04

标签: node.js promise async-await es6-promise

我正在使用Promise处理多个记录。现在,如果发生任何错误,我想在catch语句中捕获单个记录

我已经在主代码中调用了callApi方法

try {
 let result = await callApi(res)
}
catch (err) {

}

async function callApi(records) {
  return Promise.all(
    records.map(async record => {
        await processRecord(record)
    })
  )
}

如果发生任何错误,我想在catch块中显示/捕获单个记录 在下面

try {
 let result = await callApi(res)
}
catch (err) {
 console.log('Got error while processing this record', record)
}

但是我如何在catch块中获取记录变量

1 个答案:

答案 0 :(得分:1)

由于可能会抛出processRecord,因此,如果您希望记录的内容是捕获的内容,而不是实际的错误,catch processRecord错误和{{1 }}记录:

throw

尽管捕获时同时返回记录和错误可能很有用,

function callApi(records) {
  return Promise.all(
    records.map(record => (
      processRecord(record)
        .catch((err) => {
          throw record;
        })
    ))
  )
}

请注意,由于try { let result = await callApi(res) } catch ({ err, record }) { // <-------- console.log('Got error while processing this record', record); console.log(err); } function callApi(records) { return Promise.all( records.map(record => ( processRecord(record) .catch((err) => { throw { err, record }; }) )) ) } 已经显式返回Promise,因此无需将其设为callApi函数。

要等待所有请求完成,然后检查每个请求的错误,请执行以下操作:

async