implement random time
This commit is contained in:
parent
645a1ca111
commit
62a5975fb3
4
dist/index.d.ts
vendored
4
dist/index.d.ts
vendored
@ -5,6 +5,10 @@ import 'typings-global';
|
|||||||
* @param passOn
|
* @param passOn
|
||||||
*/
|
*/
|
||||||
export declare let delayFor: <T>(timeInMillisecond: number, passOn?: T) => Promise<T>;
|
export declare let delayFor: <T>(timeInMillisecond: number, passOn?: T) => Promise<T>;
|
||||||
|
/**
|
||||||
|
* delay for a random time
|
||||||
|
*/
|
||||||
|
export declare let delayForRandom: <T>(timeMinInMillisecond: number, timeMaxInMillisecond: number, passOn?: T) => Promise<T>;
|
||||||
export declare class Timeout<T> {
|
export declare class Timeout<T> {
|
||||||
promise: Promise<T>;
|
promise: Promise<T>;
|
||||||
private _deferred;
|
private _deferred;
|
||||||
|
13
dist/index.js
vendored
13
dist/index.js
vendored
@ -23,6 +23,17 @@ exports.delayFor = (timeInMillisecond, passOn) => __awaiter(this, void 0, void 0
|
|||||||
});
|
});
|
||||||
return passOn;
|
return passOn;
|
||||||
});
|
});
|
||||||
|
/**
|
||||||
|
* delay for a random time
|
||||||
|
*/
|
||||||
|
exports.delayForRandom = (timeMinInMillisecond, timeMaxInMillisecond, passOn) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
yield new Promise((resolve, reject) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve();
|
||||||
|
}, Math.random() * (timeMaxInMillisecond - timeMinInMillisecond) + timeMinInMillisecond);
|
||||||
|
});
|
||||||
|
return passOn;
|
||||||
|
});
|
||||||
class Timeout {
|
class Timeout {
|
||||||
constructor(timeInMillisecondArg, passOn) {
|
constructor(timeInMillisecondArg, passOn) {
|
||||||
this._cancelled = false;
|
this._cancelled = false;
|
||||||
@ -43,4 +54,4 @@ class Timeout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.Timeout = Timeout;
|
exports.Timeout = Timeout;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsMEJBQXVCO0FBQ3ZCLGlDQUFnQztBQUVoQzs7OztHQUlHO0FBQ1EsUUFBQSxRQUFRLEdBQUcsQ0FBVSxpQkFBeUIsRUFBRSxNQUFVO0lBQ25FLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTTtRQUNoQyxVQUFVLENBQ1I7WUFDRSxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUMsRUFDRCxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSxDQUFBO0FBRUQ7SUFLRSxZQUFhLG9CQUFvQixFQUFFLE1BQVU7UUFEckMsZUFBVSxHQUFZLEtBQUssQ0FBQTtRQUVqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUssQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1lBQ3pCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2hDLENBQUM7UUFDSCxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDcEIsQ0FBQztDQUNGO0FBdkJELDBCQXVCQyJ9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsMEJBQXVCO0FBQ3ZCLGlDQUFnQztBQUVoQzs7OztHQUlHO0FBQ1EsUUFBQSxRQUFRLEdBQUcsQ0FBVSxpQkFBeUIsRUFBRSxNQUFVLEVBQUUsRUFBRTtJQUN2RSxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3BDLFVBQVUsQ0FDUixHQUFHLEVBQUU7WUFDSCxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUMsRUFDRCxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSxDQUFBO0FBRUQ7O0dBRUc7QUFDUSxRQUFBLGNBQWMsR0FBRyxDQUFVLG9CQUE0QixFQUFFLG9CQUE0QixFQUFFLE1BQVUsRUFBRSxFQUFFO0lBQzlHLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDcEMsVUFBVSxDQUNSLEdBQUcsRUFBRTtZQUNILE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQyxFQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDLEdBQUcsb0JBQW9CLENBQ3JGLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUEsQ0FBQTtBQUVEO0lBS0UsWUFBYSxvQkFBb0IsRUFBRSxNQUFVO1FBRHJDLGVBQVUsR0FBWSxLQUFLLENBQUE7UUFFakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFLLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQTtRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDaEMsQ0FBQztRQUNILENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNwQixDQUFDO0NBQ0Y7QUF2QkQsMEJBdUJDIn0=
|
14
test/test.ts
14
test/test.ts
@ -1,6 +1,6 @@
|
|||||||
import { expect, tap } from 'tapbundle'
|
import { expect, tap } from 'tapbundle'
|
||||||
|
|
||||||
import * as smartdelay from '../dist/index'
|
import * as smartdelay from '../ts/index'
|
||||||
|
|
||||||
tap.test('.delayFor should delay async', async (tools) => {
|
tap.test('.delayFor should delay async', async (tools) => {
|
||||||
tools.timeout(5000)
|
tools.timeout(5000)
|
||||||
@ -14,6 +14,18 @@ tap.test('.delayFor should delay async', async (tools) => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
tap.test('.delayForRandpm should delay async for a random time period', async (tools) => {
|
||||||
|
tools.timeout(5000)
|
||||||
|
let timePassed = false
|
||||||
|
setTimeout(() => {
|
||||||
|
timePassed = true
|
||||||
|
}, 3000)
|
||||||
|
await smartdelay.delayForRandom(3000,4900).then(async () => {
|
||||||
|
// tslint:disable-next-line:no-unused-expression
|
||||||
|
expect(timePassed).to.be.true
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
tap.test('.delayFor should pass on a type', async (tools) => {
|
tap.test('.delayFor should pass on a type', async (tools) => {
|
||||||
tools.timeout(5000)
|
tools.timeout(5000)
|
||||||
let timePassed = false
|
let timePassed = false
|
||||||
|
15
ts/index.ts
15
ts/index.ts
@ -18,6 +18,21 @@ export let delayFor = async <T>(timeInMillisecond: number, passOn?: T) => {
|
|||||||
return passOn
|
return passOn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* delay for a random time
|
||||||
|
*/
|
||||||
|
export let delayForRandom = async <T>(timeMinInMillisecond: number, timeMaxInMillisecond: number, passOn?: T) => {
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
setTimeout(
|
||||||
|
() => {
|
||||||
|
resolve()
|
||||||
|
},
|
||||||
|
Math.random() * (timeMaxInMillisecond - timeMinInMillisecond) + timeMinInMillisecond
|
||||||
|
)
|
||||||
|
})
|
||||||
|
return passOn
|
||||||
|
}
|
||||||
|
|
||||||
export class Timeout<T> {
|
export class Timeout<T> {
|
||||||
promise: Promise<T>
|
promise: Promise<T>
|
||||||
private _deferred: smartq.Deferred<T>
|
private _deferred: smartq.Deferred<T>
|
||||||
|
Loading…
Reference in New Issue
Block a user