4 Commits

Author SHA1 Message Date
e49be654eb 2.0.10 2020-07-11 21:33:35 +00:00
9f599e79a1 fix(core): update 2020-07-11 21:33:34 +00:00
3821799070 2.0.9 2020-05-27 16:54:33 +00:00
80de670cad fix(core): update 2020-05-27 16:54:32 +00:00
3 changed files with 14 additions and 4 deletions

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartdelay",
"version": "2.0.8",
"version": "2.0.10",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,7 +1,7 @@
{
"name": "@pushrocks/smartdelay",
"private": false,
"version": "2.0.8",
"version": "2.0.10",
"description": "timeouts for the async/await era, written in TypeScript",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",

View File

@@ -33,10 +33,14 @@ export let delayForRandom = async <T>(
export class Timeout<T> {
promise: Promise<T>;
private _deferred: smartpromise.Deferred<T>;
private _timeout: any;
private _timeout;
private _cancelled: boolean = false;
private timeoutInMillis: number;
private started: number;
constructor(timeInMillisecondArg, passOn?: T) {
this.timeoutInMillis = timeInMillisecondArg;
this._deferred = smartpromise.defer<T>();
this.promise = this._deferred.promise;
this._timeout = setTimeout(() => {
@@ -44,6 +48,7 @@ export class Timeout<T> {
this._deferred.resolve(passOn);
}
}, timeInMillisecondArg);
this.started = Date.now();
}
/**
@@ -58,6 +63,11 @@ export class Timeout<T> {
*/
public cancel() {
this._cancelled = true;
this.makeUnrefed();
clearTimeout(this._timeout);
}
public getTimeLeft() {
const result = this.started + this.timeoutInMillis - Date.now();
return result > 0 ? result : 0;
}
}