From f59f19db4497a6f67f59123d778e1273a69d50c9 Mon Sep 17 00:00:00 2001 From: yisraelx Date: Wed, 13 Sep 2017 22:30:49 +0300 Subject: [PATCH] refactor(delay): move from prototype to constructor It makes more sense to create an Promise of delay form delay an existing one(method replaced by sleep #a75a15b). BREAKING CHANGE: The api of the method changed because of the move to constructor and the method is no longer on prototype. --- modules/-constructor/index.ts | 1 + modules/-constructor/package.json | 1 + modules/-prototype/index.ts | 1 - modules/-prototype/package.json | 1 - modules/delay/index.ts | 22 ++++++++++------------ test/delay.spec.ts | 25 ++++++++----------------- 6 files changed, 20 insertions(+), 31 deletions(-) diff --git a/modules/-constructor/index.ts b/modules/-constructor/index.ts index f53d58e..bb5a225 100644 --- a/modules/-constructor/index.ts +++ b/modules/-constructor/index.ts @@ -7,6 +7,7 @@ export { default as compose } from '@promises/compose'; export { default as Promises } from '@promises/core'; export { default as create } from '@promises/create'; +export { default as delay } from '@promises/delay'; export { default as exec } from '@promises/exec'; export { default as isPromise } from '@promises/is-promise'; export { default as promisify, PromisifyOptions } from '@promises/promisify'; diff --git a/modules/-constructor/package.json b/modules/-constructor/package.json index 7bbd639..64cd355 100644 --- a/modules/-constructor/package.json +++ b/modules/-constructor/package.json @@ -35,6 +35,7 @@ "@promises/compose": "^0.1.0", "@promises/core": "^0.1.0", "@promises/create": "^0.1.0", + "@promises/delay": "^0.1.0", "@promises/exec": "^0.1.0", "@promises/interfaces": "^0.1.0", "@promises/is-promise": "^0.1.0", diff --git a/modules/-prototype/index.ts b/modules/-prototype/index.ts index 07faa46..245f58a 100644 --- a/modules/-prototype/index.ts +++ b/modules/-prototype/index.ts @@ -5,7 +5,6 @@ */ export { default as Promises } from '@promises/core'; -export { default as delay } from '@promises/delay'; export { default as error } from '@promises/error'; export { default as everyParallel } from '@promises/every-parallel'; export { default as everySeries } from '@promises/every-series'; diff --git a/modules/-prototype/package.json b/modules/-prototype/package.json index cf188b4..068f87d 100644 --- a/modules/-prototype/package.json +++ b/modules/-prototype/package.json @@ -33,7 +33,6 @@ }, "dependencies": { "@promises/core": "^0.1.0", - "@promises/delay": "^0.1.0", "@promises/error": "^0.1.0", "@promises/every-parallel": "^0.1.0", "@promises/every-series": "^0.1.0", diff --git a/modules/delay/index.ts b/modules/delay/index.ts index 664e7d6..90b2bf5 100644 --- a/modules/delay/index.ts +++ b/modules/delay/index.ts @@ -10,34 +10,32 @@ import Promises from '@promises/core'; * @example * * ```typescript - * let promises: Promises = Promises.resolve('foo'); - * delay(promises, 3000).then((result: string) => { - * console.log(result); // result => 'foo' + * delay(3000).then(() => { + * console.log('timeout'); // => 'timeout' * }); * ``` */ -function delay(value?: Promises | T, ms?: number): Promises { +function delayStatic(ms?: number): Promises { return new Promises((resolve) => { - setTimeout(() => resolve(value), ms); + setTimeout(() => resolve(), ms); }); } -export default delay; +export default delayStatic; -Promises._setOnPrototype('delay', delay); +Promises._setOnConstructor('delay', delayStatic); declare module '@promises/core' { - interface Promises { + namespace Promises { /** * @example * * ```typescript - * let promises: Promises = Promises.resolve('foo'); - * promises.delay(3000).then((result: string) => { - * console.log(result); // result => 'foo' + * Promises.delay(3000).then(() => { + * console.log('timeout'); // => 'timeout' * }); * ``` */ - delay(ms?: number): Promises; + export let delay: typeof delayStatic; } } \ No newline at end of file diff --git a/test/delay.spec.ts b/test/delay.spec.ts index ce0a3e0..53d505c 100644 --- a/test/delay.spec.ts +++ b/test/delay.spec.ts @@ -2,23 +2,14 @@ import Promises from '@promises/core'; import delay from '@promises/delay'; describe('delay', () => { - - it('should be resolve after delay', () => { - let promise: any = Promises.resolve('foo'); - let delayPromises = delay(promise, 1); - - return delayPromises.then((result: string) => { - expect(result).toBe('foo'); + it('should be return promise with delay', () => { + let delayPromise = delay(2); + let pass = false; + setTimeout(() => { + pass = true; + }, 1); + return delayPromise.then(() => { + expect(pass).toBeTruthy(); }); }); - - it('should be reject after delay', () => { - let promise: any = Promises.reject('error'); - let delayPromises = delay(promise, 1); - - return delayPromises.catch((error: string) => { - expect(error).toBe('error'); - }); - }); - }); \ No newline at end of file