Ich habe x Anzahl der Anrufe an Back-End gemacht werden. Einige von ihnen sind zu denselben URLs. Ich speichere die Ergebnisse. Aber mein Problem ist, dass wenn ich loadCached sofort zweimal (oder mehrmals) mit der gleichen URL anrufe, wird es auch zweimal aufrufen, da der Cache keine URL hat, bevor der erste Abruf gelöst wird. Das Caching funktioniert also nur, wenn ein Abruf erfolgreich abgeschlossen wurde (= gelöst). Wie kann ich den Code so verbessern, dass er darauf wartet, dass der erste Abruf aufgelöst wird, um doppelte Abfragen zu vermeiden?Wie zu verhindern Fetch mit der gleichen URL zweimal aufgerufen in node.js
function loadCached(url) {
let cache = loadCached.cache || (loadCached.cache = new Map());
if (cache.has(url)) {
return Promise.resolve(cache.get(url)); // (*)
}
return fetch(url)
.then(response => response.text())
.then(text => {
cache[url] = text;
return text;
});
}
Ich benutze provect.all() zu warten, bis LoadCached zu lösen.
Sie müssen die Versprechen statt der Ergebnisse zwischenspeichern. – SLaks
https://runkit.com/moongod101/5a0f1c865f47c000128a96bb Ich denke, etwas wird funktionieren? –