È accettabile (non sorprende) utilizzare le promesse per memorizzare i risultati nella cache? L'idea è di generare una promessa una volta, e solo restituire la stessa promessa di nuovo alle chiamate successive.
Ad esempio, una funzione getAll () che restituisce una promessa esegue una funzione che richiede molto tempo solo alla prima chiamata e restituisce la stessa promessa alle chiamate ripetute.
Esempio (in JavaScript, ma in realtà non l'ho provato, quindi più simile a pseudo-codice):
var oldPromise = null;
function getAll() {
var newPromise;
if (!oldPromise) {
// first time called
newPromise = new Promise(function (resolve, reject) {
timeIntensiveFunction(function callback(data) {
resolve(data);
});
});
oldPromise = newPromise
return newPromise;
} else {
// already did it
return oldPromise;
}
}