AsyncMemo

AsyncMemo

异步缓存

特点:

  1. 共享异步。同一个缓存键的异步,最多同时运行一个异步,异步结果共享。
  2. 持久化数据。存在缓存结果,不再执行异步方法,直接返回该结果。
  3. 每个实例都有独立的缓存空间。相互之间隔离,缓存灵活配置,更多配置请查阅 cache2

Constructor

new AsyncMemo(optionsopt)

Source:
See:
Example
const asyncMemo = new AsyncMemo({ max: 20, maxStrategy: 'replaced' });
asyncMemo.run(()=>download({ fssid: 'a' }), 'a');
asyncMemo.run(()=>download({ fssid: 'b' }), 'b');
asyncMemo.run(()=>download({ fssid: 'a' }), 'a'); // 如果有缓存结果直接返回,如果有异步执行中,不会重复触发异步,但共享异步结果。

asyncMemo.run(()=>download({ fssid: 'a' }), 'a', { persisted: false }); // 不读取缓存结果,但是异步执行结果还是会缓存。
asyncMemo.run(()=>download({ fssid: 'a' })); // 没有缓存键时,直接执行异步方法,不读取缓存结果,也不会缓存异步结果。
Parameters:
Name Type Attributes Description
options Object <optional>

缓存配置项,更多配置项可参考 cache2

Properties
Name Type Attributes Description
max number <optional>

最大缓存数量

maxStrategy 'replaced' | 'limited' <optional>

缓存策略

Members

cache

cache2 实例,用于管理缓存

Source:

Methods

run(asyncFn, keyopt, optionsopt) → {Promise.<*>}

Description:
  • 执行异步方法

Source:
Example
const asyncMemo = new AsyncMemo();
asyncMemo.run(()=>download({ fssid: 'a' }), 'a');
asyncMemo.run(()=>download({ fssid: 'b' }), 'b');
asyncMemo.run(()=>download({ fssid: 'a' }), 'a'); // 如果有缓存结果直接返回,如果有异步执行中,不会重复触发异步,但共享异步结果。

asyncMemo.run(()=>download({ fssid: 'a' }), 'a', { persisted: false }); // 不读取缓存结果,但是异步执行结果还是会缓存。
asyncMemo.run(()=>download({ fssid: 'a' })); // 没有缓存键时,直接执行异步方法,不读取缓存结果,也不会缓存异步结果。
Parameters:
Name Type Attributes Description
asyncFn function

异步方法

key string <optional>

缓存键,如果没有该值将直接执行异步方法。

options Object <optional>

配置项

Properties
Name Type Attributes Default Description
ttl number <optional>

数据存活时间

persisted boolean <optional>
true

数据持久化,默认true。如果存在缓存数据,直接返回缓存数据,不再执行异步方法。
即使不开启该配置,不影响在异步执行成功后缓存数据。

Returns:

异步结果

Type
Promise.<*>