db-to-cloud
Version:
Synchronize your database with a cloud drive i.e. Dropbox, Google Drive, OneDrive, Github, etc.
37 lines (32 loc) • 661 B
JavaScript
function debounced(fn) {
let timer = 0;
let q;
return () => {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(run);
if (!q) {
q = defer();
}
return q.promise;
};
function run() {
Promise.resolve(fn())
.then(q.resolve, q.reject);
timer = 0;
q = null;
}
function defer() {
const o = {};
o.promise = new Promise((resolve, reject) => {
o.resolve = resolve;
o.reject = reject;
});
return o;
}
}
function delay(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
module.exports = {debounced, delay};