懒惰评估在lodash.js中是如何工作的?
var chosen = _(gems).filter(priceLt(10)).take(3).value();这是怎么回事?
发布于 2021-08-05 23:48:01
lodash中的延迟计算只是简单地记忆函数和延迟计算,直到你调用value()。以_([1,2,3]).map(x => x+1).filter(x => x > 0).value()为例
// wrap value in a lazy wrapper.
_([1,2,3]) => {
value: [1,2,3]
actions: []
}
// register functions
.map() => {
value: [1,2,3]
actions: [map]
}
.filter() => {
value: [1,2,3]
actions: [map, filter]
}
// unwrap and evaluate
.value() => [1,2,3].map(x => x+1).filter(x => x > 0) => [2,3,4]注意,在最后一步之前,没有执行任何函数,而只是简单地记住了函数的描述。
https://stackoverflow.com/questions/51172574
复制相似问题