Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Promise.async func作为参数传递时的所有错误处理语法_Javascript_Node.js - Fatal编程技术网

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()的唯一功能是它知道何时所有问题都得到解决,或者其中任何一个问题都被拒绝(即未捕获)。太棒了,我将尝试第一个选项。我们将很快给您回复。:)