Skip to content

Instantly share code, notes, and snippets.

@andrejewski
Created March 5, 2018 19:18
Show Gist options
  • Select an option

  • Save andrejewski/bfae59169e206622bb37ec968b4d4742 to your computer and use it in GitHub Desktop.

Select an option

Save andrejewski/bfae59169e206622bb37ec968b4d4742 to your computer and use it in GitHub Desktop.
function createLoader (keysTask) {
let keys = []
let nextTaskPromise
return {
load (key) {
const index = keys.push(key) - 1;
if (!nextTaskPromise) {
let resolver
nextTaskPromise = new Promise((resolve, reject) => {
resolver = { resolve, reject };
});
setTimeout(() => {
keysTask(keys).then(resolver.resolve, resolver.reject);
keys = [];
nextTaskPromise = null;
}, 50);
}
return nextTaskPromise.then(results => results[index]);
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment