lodash.js中的惰性评估如何工作?
var chosen = _(gems).filter(priceLt(10)).take(3).value();
这是如何工作的?
答案 0 :(得分:0)
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]
注意没有执行任何函数,只是在最后一步之前记住了函数描述。