const Dataloader = require('dataloader');
const delay = (x, t = 1500) =>
new Promise(r =>
setTimeout(() => {
r(x);
console.log('loaded '+x);
}, t)
);
const map = new Map();
const dataloader1 = new Dataloader(keys => Promise.all(keys.map(key => delay(key))), { cacheMap: map });
// either:
map.set('bip', Promise.resolve('fake bip')); // put a key in the cache, at any time
// or:
// dataloader1.prime('bip', 'fake bip');
const dataloader2 = new Dataloader(keys => Promise.all(keys.map(key => delay(key, 150))), { cacheMap: map });
dataloader1.loadMany(['foo', 'bip', 'bar', 'foo']).then(res => console.log(1 + ' ' + res));
setTimeout(() => {
dataloader2.loadMany(['foo', 'bip']).then(res => console.log(2 + ' ' + res));
dataloader1.loadMany(['bip', 'bar']).then(res => console.log(3 + ' ' + res));
}, 20);
'go';