mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2025-02-04 08:31:42 +01:00
50 lines
914 B
JavaScript
50 lines
914 B
JavaScript
|
import {AbortError} from "./error.js";
|
||
|
|
||
|
class DOMTimeout {
|
||
|
constructor(ms) {
|
||
|
this._reject = null;
|
||
|
this._promise = new Promise((resolve, reject) => {
|
||
|
this._reject = reject;
|
||
|
setTimeout(() => {
|
||
|
this._reject = null;
|
||
|
resolve();
|
||
|
}, ms);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
get elapsed() {
|
||
|
return this._promise;
|
||
|
}
|
||
|
|
||
|
abort() {
|
||
|
if (this._reject) {
|
||
|
this._reject(new AbortError());
|
||
|
this._reject = null;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class DOMTimeMeasure {
|
||
|
constructor() {
|
||
|
this._start = window.performance.now();
|
||
|
}
|
||
|
|
||
|
measure() {
|
||
|
return window.performance.now() - this._start;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export class DOMClock {
|
||
|
createMeasure() {
|
||
|
return new DOMTimeMeasure();
|
||
|
}
|
||
|
|
||
|
createTimeout(ms) {
|
||
|
return new DOMTimeout(ms);
|
||
|
}
|
||
|
|
||
|
now() {
|
||
|
return Date.now();
|
||
|
}
|
||
|
}
|