如何记忆基于承诺的功能?
直截了当的功能记忆就够了吗?
function foo() { return new Promise((resolve,reject) => { doSomethingAsync({ success: resolve,fail: reject }); }); };
这样就够了吗?
var fooMemoized = memoize(foo);
注意:此问题已更新,以删除延迟反模式.
解决方法
@H_502_15@ 是的,这就足够了. Promise是简单的返回值,这是它们的巨大好处 – 与回调相比,memoisation代码会很糟糕.如果您的诺言库确实支持某种取消,您可能只想确保备忘的承诺是无法撤销的.另请注意,这种形式的记忆也会记住拒绝,因此您无法通过“再次尝试”来从错误中恢复.