Error handling Lodash-如何在长链序列中执行错误检查

Error handling Lodash-如何在长链序列中执行错误检查,error-handling,lodash,chaining,Error Handling,Lodash,Chaining,假设我有一个链式序列,如下所示: let amount = _ .chain(selectedItemsArray) .map(item => _.find(availableItems, {id: item.id}) //how can I determine that ALL items were found right here? .filter('price_money') ... 注意上面代码中的注释。可能是selectedItemsAr

假设我有一个链式序列,如下所示:

let amount = _
    .chain(selectedItemsArray)
    .map(item => _.find(availableItems, {id: item.id})
    //how can I determine that ALL items were found right here?
    .filter('price_money')
    ...
注意上面代码中的注释。可能是
selectedItemsArray
已过期,因此某些选定项目可能不在
可用项中。因此,我最初的想法是使用
.tap
.thru
(可能是tap)来执行类似于
.every(selectedItems,uu.isObject)
或类似的操作,以捕获未找到所有项的错误状态,并在未找到所有项时抛出错误。这感觉很奇怪…有没有更好的方法来处理这种类型的错误检查中间序列

这样的方法确实有效(至少我可以抛出一个错误),但我似乎在使用
tap
来处理它不适用的东西:

  .tap(items => {
    if (!_.every(items, _.isObject)) throw new Error('Some selected items are no longer available');
  })

您可以使用另一个
\过滤器
检查元素是否不是对象,并处理有问题的值。您可以使用
|
执行回退代码。看

如果您希望代码在第一次失败时崩溃并烧掉,请使用引发错误的函数,而不是使用
控制台。error

var可用=[
{id:1,金额:2.00},
{id:2,金额:4.00}
];
所选var=[1,2,3];
var金额=(已选)
.map(item=>..find(可用,{id:item})| | item)
.filter(项=>.isObject(项)| | console.error(“项不可用:”,项))
.sumBy(“金额”);
console.log(“金额:”,Amount.toFixed(2))

您可以使用另一个
过滤器来检查元素是否不是对象,并处理有问题的值。您可以使用
|
执行回退代码。看

如果您希望代码在第一次失败时崩溃并烧掉,请使用引发错误的函数,而不是使用
控制台。error

var可用=[
{id:1,金额:2.00},
{id:2,金额:4.00}
];
所选var=[1,2,3];
var金额=(已选)
.map(item=>..find(可用,{id:item})| | item)
.filter(项=>.isObject(项)| | console.error(“项不可用:”,项))
.sumBy(“金额”);
console.log(“金额:”,Amount.toFixed(2))