UNPKG

batchloader

Version:

BatchLoader is a utility for data fetching layer to reduce requests via batching written in TypeScript. Inspired by Facebook's DataLoader

26 lines 1 kB
import { BatchLoader } from './batchloader'; export const proxyLoaderWithCache = (cache, loader, keyToUniqueId, batchDelay, batchSize) => new BatchLoader(async (keys) => { const values = await cache.mget(keys); const len = values.length; const missingKeys = []; const missingIndexes = []; for (let i = 0; i < len; i += 1) { if (values[i] === undefined) { missingKeys.push(keys[i]); missingIndexes.push(i); } } if (missingKeys.length) { const missingValues = await loader.loadMany(missingKeys); const mlen = missingValues.length; const missingKeyValues = []; for (let i = 0; i < mlen; i += 1) { const value = missingValues[i]; values[missingIndexes[i]] = value; missingKeyValues.push([missingKeys[i], value]); } cache.mset(missingKeyValues); } return values; }, keyToUniqueId, batchDelay, batchSize); //# sourceMappingURL=cacheproxyloader.js.map