我正在使用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块中获取记录变量
答案 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