首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在lodash.js中,它会缓存`.value()方法的结果吗?

在lodash.js中,它会缓存`.value()方法的结果吗?
EN

Stack Overflow用户
提问于 2015-05-22 03:07:43
回答 1查看 382关注 0票数 6

例如,我有这样的代码(coffeescript):

代码语言:javascript
复制
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())

这一点以后可能会被其他提交方法所链接。同时,它的价值可能是必要的。我只是想知道它是否会缓存结果。我没有在其文档中找到它是如何实现的。

是计算一次还是两次:

代码语言:javascript
复制
myFunction1(sortedLatLng.value())
myFunction2(sortedLatLng.value())

有人对此有想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-22 12:18:53

创建锁包装器时,包装的值将存储在包装器中。例如:

代码语言:javascript
复制
var wrapper = _([ 1, 2, 3 ]);

在这里,[ 1, 2, 3 ]存储在wrapper中,添加到包装器中的任何链式操作都传递这个值。链式操作是存储的,不是执行的。例如:

代码语言:javascript
复制
var wrapper = _([ 1, 2, 3 ]).map(function(item) {
    console.log('mapping');
    return item;
});

此代码使用map()操作创建包装器,但不执行它。相反,它存储链式操作,以便在调用value()时可以执行它们:

代码语言:javascript
复制
var wrapper = _([ 1, 2, 3 ]).map(function(item) {
    console.log('mapping');
    return item;
});

wrapper.value()
// mapping
// ...

在这个包装器上再次调用value()只会对包装的值重复相同的操作-结果不会被缓存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30387739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档