UNPKG

promise-animate

Version:

Use request animation frame with promises and pleasure

23 lines (22 loc) 784 B
export default (function (_a) { var duration = _a.duration, update = _a.update, cancellationToken = _a.cancellationToken; return new Promise(function (resolve) { var startTimestamp = Date.now(); var endTimestamp = startTimestamp + duration; var loop = function () { var now = Date.now(); if (cancellationToken && cancellationToken.cancel) { resolve(); return; } if (now >= endTimestamp) { update(1); resolve(); return; } update(Math.min(1, (now - startTimestamp) / duration)); requestAnimationFrame(loop); }; requestAnimationFrame(loop); }); });