在 lodash.js 中,它会缓存 `.value()` 方法的结果吗?
In lodash.js, will it cache the result for `.value()` method?
例如,我有这样的代码(coffeescript):
sortedLatLng = _(w)
.sortBy (x) -> x.time
.map (x) -> [x.longitude,x.latitude]
.uniq((x)-> x[0].toFixed(3) + "," + x[1].toFixed(3)) # keep three decimal to merge nearby points
console.log(sortedLatLng.value())
myFunction1(sortedLatLng.value())
myFunction2(sortedLatLng.value())
console.log(sortedLatLng.reverse().value())
稍后可能会通过其他 lodash 方法进行链接。同时,可能需要提取它的价值。我只是想知道它是否会缓存结果。我没有在它的文档中找到它是如何实现的..
会计算一次还是两次:
myFunction1(sortedLatLng.value())
myFunction2(sortedLatLng.value())
有人对此有想法吗?
当您创建 lodash 包装器时,包装的值存储在包装器中。例如:
var wrapper = _([ 1, 2, 3 ]);
这里,[ 1, 2, 3 ]
存储在 wrapper
中,添加到包装器的任何链式操作都将传递此值。链式操作 已存储 ,未执行。例如:
var wrapper = _([ 1, 2, 3 ]).map(function(item) {
console.log('mapping');
return item;
});
此代码使用 map()
操作创建包装器,但不执行它。相反,它存储链式操作,以便在调用 value()
时,它可以执行它们:
var wrapper = _([ 1, 2, 3 ]).map(function(item) {
console.log('mapping');
return item;
});
wrapper.value()
// mapping
// ...
在此包装器上再次调用 value()
只会对包装的值重复相同的操作 - 结果不会被缓存。
例如,我有这样的代码(coffeescript):
sortedLatLng = _(w)
.sortBy (x) -> x.time
.map (x) -> [x.longitude,x.latitude]
.uniq((x)-> x[0].toFixed(3) + "," + x[1].toFixed(3)) # keep three decimal to merge nearby points
console.log(sortedLatLng.value())
myFunction1(sortedLatLng.value())
myFunction2(sortedLatLng.value())
console.log(sortedLatLng.reverse().value())
稍后可能会通过其他 lodash 方法进行链接。同时,可能需要提取它的价值。我只是想知道它是否会缓存结果。我没有在它的文档中找到它是如何实现的..
会计算一次还是两次:
myFunction1(sortedLatLng.value())
myFunction2(sortedLatLng.value())
有人对此有想法吗?
当您创建 lodash 包装器时,包装的值存储在包装器中。例如:
var wrapper = _([ 1, 2, 3 ]);
这里,[ 1, 2, 3 ]
存储在 wrapper
中,添加到包装器的任何链式操作都将传递此值。链式操作 已存储 ,未执行。例如:
var wrapper = _([ 1, 2, 3 ]).map(function(item) {
console.log('mapping');
return item;
});
此代码使用 map()
操作创建包装器,但不执行它。相反,它存储链式操作,以便在调用 value()
时,它可以执行它们:
var wrapper = _([ 1, 2, 3 ]).map(function(item) {
console.log('mapping');
return item;
});
wrapper.value()
// mapping
// ...
在此包装器上再次调用 value()
只会对包装的值重复相同的操作 - 结果不会被缓存。