백엔드에 x 번의 전화를 걸 수 있습니다. 그들 중 일부는 동일한 URL에 있습니다. 결과를 캐싱하고 있습니다. 하지만 내 문제는 바로 loadCached를 동일한 URL로 두 번 (또는 여러 번) 호출하면 실제로 첫 번째 가져 오기가 해결되기 전에 캐시에 URL이 없기 때문에 실제로 두 번 가져 오기를 호출한다는 것입니다. 따라서 캐싱은 한 번의 반입이 성공적으로 완료 (= 해결) 된 경우에만 작동합니다. 중복 쿼리를 피하기 위해 첫 번째 가져 오기가 완료 될 때까지 기다릴 코드를 어떻게 개선 할 수 있습니까?node.js에서 동일한 URL을 두 번 호출하여 가져 오기를 방지하는 방법
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 뭔가가 작동 할 것 같습니까? –