@qrsln/utils
Version:
59 lines (57 loc) • 5.91 kB
JavaScript
/** @dynamic */
export const Sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
/** @dynamic */
export class StopWatch {
constructor() {
this.startTimeMillis = 0;
this.totalTimeMillis = 0;
/**
* Convert milliseconds to time string (hh:mm:ss:mss).
* @param milliseconds Number
* @return String
*/
this.TimeSpan = (milliseconds) => new Date(milliseconds).toISOString().slice(11, -1);
}
static StartNew() {
const stopWatch = new StopWatch();
stopWatch.Start();
return stopWatch;
}
Reset() {
this.startTimeMillis = 0;
this.totalTimeMillis = 0;
}
Start() {
this.startTimeMillis = Date.now();
}
Stop() {
const lastTime = Date.now() - this.startTimeMillis;
this.totalTimeMillis += lastTime;
// console.log(this.totalTimeMillis, lastTime);
return this.Elapsed;
}
// Get the elapsed time as a TimeSpan value.
get Elapsed() {
return this.TimeSpan(this.totalTimeMillis);
}
// Get the elapsed time as a TimeSpan value.
get ElapsedMilliseconds() {
return this.totalTimeMillis;
}
}
/*
import {Sleep, StopWatch} from '@qrsln/loot-box/Utils';
(async () => {
const watcher = StopWatch.StartNew();
watcher.Stop();
console.log(watcher.Elapsed);
console.log("Tasks take " + watcher.ElapsedMilliseconds + " milliseconds");
const stopWatch = new StopWatch();
stopWatch.Start();
await Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
const ts = stopWatch.Elapsed;
})();
* */
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcFdhdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvQ29yZS9zcmMvU3RvcFdhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWU7QUFDZixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXRGLGVBQWU7QUFDZixNQUFNLE9BQU8sU0FBUztJQUlwQjtRQUhRLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBcUM1Qjs7OztXQUlHO1FBQ0ksYUFBUSxHQUFHLENBQUMsWUFBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBdkMvRixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVE7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUMzRCxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsQ0FBQztRQUNqQywrQ0FBK0M7UUFDL0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0NBUUY7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztLQWdCSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZHluYW1pYyAqL1xyXG5leHBvcnQgY29uc3QgU2xlZXAgPSAobXM/OiBudW1iZXIpID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG5cclxuLyoqIEBkeW5hbWljICovXHJcbmV4cG9ydCBjbGFzcyBTdG9wV2F0Y2gge1xyXG4gIHByaXZhdGUgc3RhcnRUaW1lTWlsbGlzID0gMDtcclxuICBwcml2YXRlIHRvdGFsVGltZU1pbGxpcyA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFN0YXJ0TmV3KCk6IFN0b3BXYXRjaCB7XHJcbiAgICBjb25zdCBzdG9wV2F0Y2ggPSBuZXcgU3RvcFdhdGNoKCk7XHJcbiAgICBzdG9wV2F0Y2guU3RhcnQoKTtcclxuICAgIHJldHVybiBzdG9wV2F0Y2g7XHJcbiAgfVxyXG5cclxuICBSZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhcnRUaW1lTWlsbGlzID0gMDtcclxuICAgIHRoaXMudG90YWxUaW1lTWlsbGlzID0gMDtcclxuICB9XHJcblxyXG4gIFN0YXJ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGFydFRpbWVNaWxsaXMgPSBEYXRlLm5vdygpO1xyXG4gIH1cclxuXHJcbiAgU3RvcCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbGFzdFRpbWU6IG51bWJlciA9IERhdGUubm93KCkgLSB0aGlzLnN0YXJ0VGltZU1pbGxpcztcclxuICAgIHRoaXMudG90YWxUaW1lTWlsbGlzICs9IGxhc3RUaW1lO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy50b3RhbFRpbWVNaWxsaXMsIGxhc3RUaW1lKTtcclxuICAgIHJldHVybiB0aGlzLkVsYXBzZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIGVsYXBzZWQgdGltZSBhcyBhIFRpbWVTcGFuIHZhbHVlLlxyXG4gIGdldCBFbGFwc2VkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5UaW1lU3Bhbih0aGlzLnRvdGFsVGltZU1pbGxpcyk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIGVsYXBzZWQgdGltZSBhcyBhIFRpbWVTcGFuIHZhbHVlLlxyXG4gIGdldCBFbGFwc2VkTWlsbGlzZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy50b3RhbFRpbWVNaWxsaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byB0aW1lIHN0cmluZyAoaGg6bW06c3M6bXNzKS5cclxuICAgKiBAcGFyYW0gIG1pbGxpc2Vjb25kcyBOdW1iZXJcclxuICAgKiBAcmV0dXJuIFN0cmluZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBUaW1lU3BhbiA9IChtaWxsaXNlY29uZHM6IG51bWJlcikgPT4gbmV3IERhdGUobWlsbGlzZWNvbmRzKS50b0lTT1N0cmluZygpLnNsaWNlKDExLCAtMSk7XHJcbn1cclxuXHJcbi8qXHJcbmltcG9ydCB7U2xlZXAsIFN0b3BXYXRjaH0gZnJvbSAnQHFyc2xuL2xvb3QtYm94L1V0aWxzJztcclxuXHJcbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgd2F0Y2hlciA9IFN0b3BXYXRjaC5TdGFydE5ldygpO1xyXG4gICAgICAgIHdhdGNoZXIuU3RvcCgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHdhdGNoZXIuRWxhcHNlZCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJUYXNrcyB0YWtlIFwiICsgd2F0Y2hlci5FbGFwc2VkTWlsbGlzZWNvbmRzICsgXCIgbWlsbGlzZWNvbmRzXCIpO1xyXG5cclxuICAgICAgICBjb25zdCBzdG9wV2F0Y2ggPSBuZXcgU3RvcFdhdGNoKCk7XHJcbiAgICAgICAgc3RvcFdhdGNoLlN0YXJ0KCk7XHJcbiAgICAgICAgYXdhaXQgU2xlZXAoMTAwMDApO1xyXG4gICAgICAgIHN0b3BXYXRjaC5TdG9wKCk7XHJcbiAgICAgICAgLy8gR2V0IHRoZSBlbGFwc2VkIHRpbWUgYXMgYSBUaW1lU3BhbiB2YWx1ZS5cclxuICAgICAgICBjb25zdCB0cyA9IHN0b3BXYXRjaC5FbGFwc2VkO1xyXG59KSgpO1xyXG4qICAqL1xyXG4iXX0=