You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
478 B
JavaScript

"use strict";
module.exports = function promiseDelayEvery(delay) {
let lastScheduledEmit = 0;
return function delayer() {
return new Promise((resolve, _reject) => {
let targetTime = lastScheduledEmit + delay;
let currentTime = Date.now();
if (currentTime >= targetTime) {
lastScheduledEmit = currentTime;
resolve();
} else {
lastScheduledEmit = targetTime;
setTimeout(() => {
resolve();
}, targetTime - currentTime);
}
});
}
};