gpt4 book ai didi

传递给 reduce 的 JavaScript 错误处理异步函数

转载 作者:行者123 更新时间:2023-11-30 15:05:52 28 4
gpt4 key购买 nike

<分区>

我将 async 函数传递给数组 reduce 函数。捕获传入函数抛出的错误的语法是什么?减少发生在 try catch block 内,它可以很好地捕获其他错误,但是如果传入函数,node 会给我一个 UnhandledPromiseRejectionWarning本身会引发错误。

代码:

aFunction = async (anArray) => {
try {
const result = await anArray.reduce(async (a, b) => {
await doSomethingTo(b);
}, Promise.resolve());

return result;
}

catch (error) {
winston.error(error);
}
}

(编辑)实际代码:

exports.chainedQueryDB = async (queries, finalTask, download) => {
let client = await pool.connect();
try {
winston.info(`Begin chained table query.`);
// Loop through query array
const result = await queries.reduce(async (a, b) => {
await client.query(b);
}, Promise.resolve());

if (download) {
return streamOut(download, client);
}

return result.rows;
}

catch (error) {
throw error;
}

finally {
const final = await client.query(finalTask);
winston.info(`Temp table dropped.`);
client.release();
}
}

(编辑)报告:await client.query(b) 替换为 await a; return client.query(b); 解决了这个问题。仅使用 await client.query(b)reduce 似乎 1) 生成一堆 float 的 client.query 调用,即使较早的 promise 被拒绝,并且 2) 导致未处理的 promise 拒绝警告。使用 等待一个; return client.query(b); 在第一次拒绝时停止执行,catch block 按原计划捕获错误。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com