Javascript Promise.async func作为参数传递时的所有错误处理语法
看看前面的答案,一种处理承诺中错误的适当方法。所有这些都是通过使用以下方法:Javascript Promise.async func作为参数传递时的所有错误处理语法,javascript,node.js,Javascript,Node.js,看看前面的答案,一种处理承诺中错误的适当方法。所有这些都是通过使用以下方法: Promise.all( promises.map(p => p.catch(error => null)) ) 在我的代码中,我希望在承诺的映射中传递一个异步func,并且能够在承诺失败时运行catch,而不会破坏整个链 我的代码: const handler = async (item) => { const result = await Promise() retu
Promise.all(
promises.map(p => p.catch(error => null))
)
在我的代码中,我希望在承诺的映射中传递一个异步func,并且能够在承诺失败时运行catch,而不会破坏整个链
我的代码:
const handler = async (item) => {
const result = await Promise()
return result
}
const items = [1,2,3]
const results = await Promise.all(items.map(handler))
如何在Promise.com中运行handler func,同时仍然捕获错误并保持链的活动状态?为
.map
编写另一个函数,以执行与第一个代码块中相同的操作:调用handler
和如果抛出:
const results = await Promise.all(
items.map(
item => handler(item).catch(error => null)
)
);
或者,通过承诺。全部结算
:
const results = await Promise.allSettled(items.map(handler));
上述操作将生成一个对象数组。要查找成功通过的结果,请从包含该值的对象中提取该值:
const truthyResults = results
.map(({ value }) => value)
.filter(value => value !== undefined);
等等,是我被绊倒了,还是你在试图处理对Promise.all()中任何承诺的拒绝?因为Promise.all()
一旦任何承诺失败,就会完全拒绝。@RoboRobok如果我弄错了,请纠正我,但我相信已经做了一些增强来支持Promise.all中的错误捕获,以保留活动链。Promise.allsolited()
的形式有所改进。旧的Promise.all()
拒绝任何内部拒绝的东西,甚至不关心未完成的承诺。它是有效的,因为内部的承诺永远不会拒绝。然后()将禁用拒绝。这是在这些承诺进入Promise.all()之前完成的。我指的是您的catch(),它是当时的别名(未定义,calback)。承诺从来没有同步性。当您将一个Promise与multiple then()和catch()放在Promise.all()之间时,每条链的末端就是最终的Promise。但它们仍然异步工作。Promise.all()的唯一功能是它知道何时所有问题都得到解决,或者其中任何一个问题都被拒绝(即未捕获)。太棒了,我将尝试第一个选项。我们将很快给您回复。:)