Jak mogę zapamiętać funkcję opartą na obietnicy?Memoization of promise-based function
Czy wystarczy zwykła zapamiętywanie funkcji?
function foo() {
return new Promise((resolve, reject) => {
doSomethingAsync({ success: resolve, fail: reject });
});
};
Czy to wystarczy?
var fooMemoized = memoize(foo);
Uwaga: kwestia ta została zaktualizowana, aby usunąć odroczony anty-wzór.
Tak, to powinno działać. Po raz pierwszy fooMemoized nazywa się foo() będzie działać i zwróci obietnicę. Memoize następnie "cache", że obietnica. Każde wezwanie do fooMemoized zwróci tę samą obietnicę, która, jeśli zostanie oznaczona jako rozwiązana, zostanie uruchomiona natychmiast. – startswithaj
Zwróć uwagę na swój anty-wzór w implementacji 'foo()'. Całe jego ciało może być po prostu 'return doSomethingAsync();' – jfriend00
@ jfriend00: s/could/should/:-) Ta forma [odroczonego antipattern] (http://stackoverflow.com/q/23803743/1048572) nie działa przekazywać błędy. – Bergi