2 Commits

Author SHA1 Message Date
2dc91dc2f0 2.0.11 2021-06-04 13:54:21 +02:00
3784de03ce fix(core): update 2021-06-04 13:54:21 +02:00
3 changed files with 23295 additions and 1269 deletions

24575
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{ {
"name": "@pushrocks/smartdelay", "name": "@pushrocks/smartdelay",
"private": false, "private": false,
"version": "2.0.10", "version": "2.0.11",
"description": "timeouts for the async/await era, written in TypeScript", "description": "timeouts for the async/await era, written in TypeScript",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
@@ -28,7 +28,7 @@
"@gitzone/tsrun": "^1.2.8", "@gitzone/tsrun": "^1.2.8",
"@gitzone/tstest": "^1.0.28", "@gitzone/tstest": "^1.0.28",
"@pushrocks/tapbundle": "^3.2.1", "@pushrocks/tapbundle": "^3.2.1",
"@types/node": "^14.0.5", "@types/node": "^15.12.0",
"tslint": "^6.1.2", "tslint": "^6.1.2",
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },

View File

@@ -2,32 +2,26 @@ import * as smartpromise from '@pushrocks/smartpromise';
/** /**
* delay something, works like setTimeout * delay something, works like setTimeout
* @param timeInMillisecond * @param timeInMillisecondArg
* @param passOn * @param passOnArg
*/ */
export let delayFor = async <T>(timeInMillisecond: number, passOn?: T) => { export let delayFor = async <T>(timeInMillisecondArg: number, passOnArg?: T, unrefedArg = false) => {
await new Promise((resolve, reject) => { const timeout = new Timeout(timeInMillisecondArg, null, unrefedArg);
setTimeout(() => { await timeout.promise;
resolve(); return passOnArg;
}, timeInMillisecond);
});
return passOn;
}; };
/** /**
* delay for a random time * delay for a random time
*/ */
export let delayForRandom = async <T>( export let delayForRandom = async <T>(
timeMinInMillisecond: number, timeMinInMillisecondArg: number,
timeMaxInMillisecond: number, timeMaxInMillisecondArg: number,
passOn?: T passOnArg?: T,
unrefedArg = false
) => { ) => {
await new Promise((resolve, reject) => { await delayFor(Math.random() * (timeMaxInMillisecondArg - timeMinInMillisecondArg) + timeMinInMillisecondArg, null, unrefedArg)
setTimeout(() => { return passOnArg;
resolve();
}, Math.random() * (timeMaxInMillisecond - timeMinInMillisecond) + timeMinInMillisecond);
});
return passOn;
}; };
export class Timeout<T> { export class Timeout<T> {
@@ -39,7 +33,7 @@ export class Timeout<T> {
private timeoutInMillis: number; private timeoutInMillis: number;
private started: number; private started: number;
constructor(timeInMillisecondArg, passOn?: T) { constructor(timeInMillisecondArg, passOn?: T, unrefedArg = false) {
this.timeoutInMillis = timeInMillisecondArg; this.timeoutInMillis = timeInMillisecondArg;
this._deferred = smartpromise.defer<T>(); this._deferred = smartpromise.defer<T>();
this.promise = this._deferred.promise; this.promise = this._deferred.promise;
@@ -49,6 +43,9 @@ export class Timeout<T> {
} }
}, timeInMillisecondArg); }, timeInMillisecondArg);
this.started = Date.now(); this.started = Date.now();
if (unrefedArg) {
this.makeUnrefed();
}
} }
/** /**