class ApiService {
async fetchData(id) {
// 여기에서 실제 API 호출을 수행합니다.
console.log(`Fetching data for ID: ${id}`);
return `Data for ID: ${id}`;
}
}
class ApiProxy {
constructor(apiService) {
this.apiService = apiService;
this.cache = new Map();
}
async fetchData(id) {
if (this.cache.has(id)) {
console.log(`Returning cached data for ID: ${id}`);
return this.cache.get(id);
}
const data = await this.apiService.fetchData(id);
this.cache.set(id, data);
return data;
}
}
const apiService = new ApiService();
const apiProxy = new ApiProxy(apiService);
(async () => {
console.log(await apiProxy.fetchData(1)); // API 호출을 수행하고 캐싱합니다.
console.log(await apiProxy.fetchData(1)); // 캐시된 데이터를 반환합니다.
})();