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))代码>