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> |
缓存配置项,更多配置项可参考 Properties
|
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
|
Returns:
异步结果
- Type
- Promise.<*>