gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:58:57 25 4
gpt4 key购买 nike

因此,可以说我有一个如下所示的链接序列:

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可能已过期,因此某些选定项可能不在 availableItems中。因此,我最初的想法是使用 .tap.thru(可能是点击)来执行类似 _.every(selectedItems, _.isObject)的操作或类似的操作以捕获未找到所有项的错误状态,如果未找到所有项则抛出错误。不过,这感觉很奇怪……还有其他更好的方式来处理这种类型的错误检查中间序列吗?

像这样的事情确实起作用(至少我会抛出错误),但似乎我正在将 tap用于其不适合的用途:
  .tap(items => {
if (!_.every(items, _.isObject)) throw new Error('Some selected items are no longer available');
})

最佳答案

您可以使用另一个_.filter来检查元素是否不是对象,并且还可以处理有问题的值。您可以使用||执行后备代码。参见this question

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

var available = [
{ id: 1, amount: 2.00 },
{ id: 2, amount: 4.00 }
];
var selected = [1, 2, 3];

var amount = _(selected)
.map(item => _.find(available, {id:item}) || item)
.filter(item => _.isObject(item) || console.error("Item not available:", item))
.sumBy('amount');

console.log("Amount:", amount.toFixed(2));
<script src="https://cdn.jsdelivr.net/lodash/4.15.0/lodash.min.js"></script>

关于error-handling - Lodash-如何在长链序列中执行错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39193731/

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