UNPKG

@qiniu/miku-delivery-mp-ks

Version:

Kuaishou Mini Program SDK for Miku Delivery

23 lines (22 loc) 706 B
/** * @file Asynchronous Task related helpers */ /** 对于异步行为,将同时发生的多次调用进行合并 */ export function collapseCalls( /** 异步行为实现逻辑 */ fn, /** 基于异步行为的调用参数计算标识(标识相同的调用才会被合并) */ getKey) { const results = new Map(); return function fnWithCallsCollapsed(...args) { const key = getKey(...args); const fromCache = results.get(key); if (fromCache != null) return fromCache; const ret = fn(...args); results.set(key, ret); const onSettled = () => results.delete(key); ret.then(onSettled, onSettled); return ret; }; }