atombeak
Version:
Create asynchronous atomic functions!
39 lines (38 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultClock = {
after: function (delay) {
return new Promise(function (resolve) {
setTimeout(function () { return resolve(null); }, delay);
});
}
};
function testClock(startTime) {
var listeners = [];
var currentTime = startTime;
return {
after: function (delay) {
return new Promise(function (resolve) {
if (delay <= 0) {
}
else {
var listener = {
callback: function () { return resolve(null); },
atTime: currentTime + delay
};
listeners.push(listener);
}
});
},
setTime: function (time) {
currentTime = time;
listeners.forEach(function (listener) {
if (listener.atTime <= currentTime) {
listener.callback();
}
});
listeners = listeners.filter(function (listener) { return listener.atTime > currentTime; });
}
};
}
exports.testClock = testClock;