MST

星途 面试题库

面试题:JavaScript Web编程中如何实现基于时间的缓存更新策略

假设你正在开发一个Web应用,需要从服务器获取数据并缓存,要求每60分钟更新一次缓存数据。请用JavaScript代码实现一个通用的基于时间的缓存更新函数,能够处理不同类型的API请求,并且要考虑缓存未过期时直接返回缓存数据的情况。
17.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function createCachingFunction(apiCall, cacheDuration = 60 * 1000) {
    let cache = null;
    let cacheTimestamp = null;

    return async function() {
        if (cache && Date.now() - cacheTimestamp < cacheDuration) {
            return cache;
        }

        const newData = await apiCall.apply(this, arguments);
        cache = newData;
        cacheTimestamp = Date.now();
        return cache;
    };
}

// 示例使用
async function sampleApiCall() {
    // 模拟API调用
    return new Promise(resolve => setTimeout(() => resolve('API data'), 1000));
}

const cachedApiCall = createCachingFunction(sampleApiCall, 60 * 1000);

// 调用缓存函数
cachedApiCall().then(data => console.log(data));