以下方法/技术的名称是什么(我会尽力描述最好的,“memoization”背景可能需要理解为什么这种技术非常有用) :
你启动了一些潜在的长度异步计算,你意识到相同的计算已经启动但尚未完成并且你在第一次计算时“捎带”。然后,当第一个计算结束时,它不会发出一个而是两个回调。
目标是不要不必要地开始第二次计算,因为你知道已经有相同的计算在运行。
请注意,尽管并非完全不同,但我并不是在寻找“memoization”的特殊缓存情况:memoization是指当你开始计算并找到同一计算的缓存(memoized)结果时已完成,您可以重复使用。
这里我正在寻找技术的名称,其方式与memoization有点类似(因为它可能对于memoization是一种有用的技术的某些原因很有用),除了它重用第一次计算的结果,即使在你发出第二次计算时第一次计算还没有完成。
我总是把这种技术称为“捎带”,但我不知道这是否正确。
我实际上不止一次使用过这种“类固醇记忆”,它非常方便。
我只是不知道这个(高级?)技术的名称是什么。
修改
该死的,我想对epatel的答案发表评论,但它消失了。 epatel的回答给了我一个想法,这种技术可以称为“lazy memoization”:)答案 0 :(得分:4)
这只是期货的备忘录。
正常的“渴望”的记忆就像这样:
f_memo(x):
critical_section:
if (exists answers(f,x))
return answers(f,x)
else
a = f(x)
answers(f,x) = a
return a
现在,如果f(x)返回期货而非实际结果,则上述代码按原样。你得到了搭载效果,就像这样:
答案 1 :(得分:2)
答案 2 :(得分:2)
在某些情况下,我听说过“请求合并”。
答案 3 :(得分:1)
听起来有点像Lazy Evaluation,但不完全是......