1.0.3 • Published 9 months ago

promise-cache-kit v1.0.3

Weekly downloads
-
License
Mozilla Public Li...
Repository
github
Last release
9 months ago

简体中文 | English

promise-cache-kit

promise-cache-kit 是一个用于缓存 Promise 结果的实用工具库,支持 CommonJS 和 ES 模块。它提供了两个主要功能:

  • createCachedPromise 用于缓存一个异步函数的结果,并提供 checkHandler 用于自定义缓存有效性判断。
  • createCachedRequest 用于根据不同的输入参数缓存不同的异步函数结果,并支持设置缓存策略。

特性

  • 缓存 Promise 结果:避免重复的异步操作,提高性能。
  • 支持缓存清除:可以手动清除缓存。
  • 支持 CommonJS 和 ES 模块:兼容多种模块系统。
  • 易于使用:简单的 API,易于集成到现有项目中。

安装

使用 npm 安装:

npm install promise-cache-kit

使用方法

createCachedPromise

createCachedPromise 用于创建一个带缓存功能的 Promise 函数。

import { createCachedPromise } from 'promise-cache-kit';

let callCount = 0;
const target = async () => {
  callCount++;
  return 42;
};

const cachedPromise = createCachedPromise(target);

(async () => {
  const result1 = await cachedPromise();
  const result2 = await cachedPromise();

  console.log(result1); // 输出: 42
  console.log(result2); // 输出: 42
  console.log(callCount); // 输出: 1

  cachedPromise.clearCache();
  const result3 = await cachedPromise();

  console.log(result3); // 输出: 42
  console.log(callCount); // 输出: 2
})();

createCachedRequest

createCachedRequest 用于创建一个带缓存功能的请求函数。

import { createCachedRequest } from 'promise-cache-kit';

let callCount = 0;
const target = async params => {
  callCount++;
  return params.value;
};

const cachedRequest = createCachedRequest(target, { ttl: 1000 });

(async () => {
  const result1 = await cachedRequest({ value: 42 });
  const result2 = await cachedRequest({ value: 42 });
  const result3 = await cachedRequest({ value: 43 });

  console.log(result1); // 输出: 42
  console.log(result2); // 输出: 42
  console.log(result3); // 输出: 43
  console.log(callCount); // 输出: 2

  cachedRequest.clearCache();
  const result4 = await cachedRequest({ value: 42 });

  console.log(result4); // 输出: 42
  console.log(callCount); // 输出: 3
})();

API

createCachedPromise

createCachedPromise(target, checkHandler, retry)

参数类型默认值描述
targetFunction需要缓存的异步函数
checkHandlerFunction (可选)defaultCheckHandler判断值是否需要更新的回调函数 ({ prevUpdateTime, prevValue }) => {}
retryFunction | boolean (可选)true重试策略配置。true 使用默认重试策略false 不启用重试,或自定义函数

返回一个带缓存功能的 Promise 函数,并附带一个 clearCache 方法。

cachedPromise(options)

参数类型默认值描述
optionsObject调用选项
options.freshbooleanfalse是否强制刷新缓存

返回目标函数的结果。

cachedPromise.clearCache()

清除当前缓存。

createCachedRequest

createCachedRequest(target, options)

参数类型默认值描述
targetFunction需要缓存的异步函数
optionsObject (可选)配置选项
options.maxNumberInfinity最大缓存数
options.cacheKeyGeneratorFunctionJSON.stringify自定义缓存键生成函数
options.retryFunction | booleantrue重试策略配置。true 使用默认重试策略false 不启用重试,或自定义函数
options.ttlNumber缓存的生存时间(毫秒)

返回一个带缓存功能的请求函数,并附带一个 clearCache 方法。

cachedRequest(params, options)

参数类型默认值描述
paramsObject调用参数(传递给 target
optionsObject调用选项
options.freshbooleanfalse是否强制刷新缓存

返回目标函数的结果。

cachedRequest.getStats()

返回缓存统计信息,包括命中次数、未命中次数、总请求次数、命中率和当前缓存大小。

cachedRequest.clearCache()

清除当前缓存。

许可证

Mozilla Public License Version 2.0

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago