バックエンドに対してx回の呼び出しを行う必要があります。それらの一部は同じURLになります。私は結果をキャッシュしています。しかし、私の問題は、loadCachedを同じURLで2回(または複数回)呼び出すと、最初のフェッチが解決される前にキャッシュにURLがないため、実際にフェッチを2回呼び出すことになります。したがって、キャッシュは1つのフェッチが正常に完了した(=解決された)場合にのみ機能します。重複したクエリを避けるために最初のフェッチが解決されるのを待つようにコードを改善するにはどうすればよいですか?node.jsで同じURLが2回呼び出されるのを防ぐ方法
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;
});
}
私は、loadCachedが解決するまで待つためにpromise.all()を使用しています。あなたは全体の約束をキャッシュする必要が
結果の代わりに約束をキャッシュする必要があります。 – SLaks
https://runkit.com/moongod101/5a0f1c865f47c000128a96bb私は何かうまくいくと思いますか? –