diff --git a/q/Q-tests.ts b/q/Q-tests.ts index 02a409b6b..f982ae8d6 100644 --- a/q/Q-tests.ts +++ b/q/Q-tests.ts @@ -1,5 +1,7 @@ /// +import q = module('q'); + Q(8).then(x => console.log(x.toExponential())); var delay = function (delay: number) { @@ -12,6 +14,14 @@ Q.when(delay(1000), function () { console.log('Hello, World!'); }); +Q.delay(Q(8), 1000).then(x => x.toExponential()); +Q.delay(8, 1000).then(x => x.toExponential()); +Q.delay(Q("asdf"), 1000).then(x => x.length); +Q.delay("asdf", 1000).then(x => x.length); + +var eventualAdd = Q.promised((a: number, b: number) => a + b); +eventualAdd(Q(1), Q(2)).then(x => x.toExponential()); + var eventually = function (eventually) { return Q.delay(eventually, 1000); }; @@ -48,11 +58,4 @@ Q.allResolved([]) var exception = promise.valueOf().exception; } }) -}); - -var initialVal: any; -var funcs = ['foo', 'bar', 'baz', 'qux']; -var result = Q.resolve(initialVal); -funcs.forEach(function (f) { - result = result.then(f); }); \ No newline at end of file diff --git a/q/Q.d.ts b/q/Q.d.ts index 951f615d0..56a070b35 100644 --- a/q/Q.d.ts +++ b/q/Q.d.ts @@ -16,22 +16,23 @@ declare module Q { interface Promise { fail(errorCallback: Function): Promise; - fin(finallyCallback: Function): Promise; + fin(finallyCallback: Function): Promise; + finally(finallyCallback: Function): Promise; then(onFulfilled?: (value: T) => any, onRejected?: (reason) => any, onProgress?: Function): Promise; spread(onFulfilled: Function, onRejected?: Function): Promise; catch(onRejected: Function): Promise; progress(onProgress: Function): Promise; - done(onFulfilled?: Function, onRejected?: Function, onProgress?: Function): Promise; + done(onFulfilled?: Function, onRejected?: Function, onProgress?: Function): void; get(propertyName: String): Promise; set(propertyName: String, value: any): Promise; delete(propertyName: String): Promise; post(methodName: String, args: any[]): Promise; invoke(methodName: String, ...args: any[]): Promise; - keys(): Promise; + keys(): Promise; fapply(args: any[]): Promise; fcall(method: Function, ...args: any[]): Promise; - timeout(ms: number): Promise; - delay(ms: number): Promise; + timeout(ms: number, message?): Promise; + delay(ms: number): Promise; isFulfilled(): bool; isRejected(): bool; isPending(): bool; @@ -48,22 +49,25 @@ declare module Q { export function all(promises: Promise[]): Promise; export function allResolved(promises: Promise[]): Promise; export function spread(onFulfilled: Function, onRejected: Function): Promise; - export function timeout(ms: number): Promise; - export function delay(ms: number): Promise; - export function delay(value: any, ms: number): Promise; - export function isFulfilled(): bool; - export function isRejected(): bool; - export function isPending(): bool; - export function valueOf(): any; + export function timeout(promise: Promise, ms: number, message?): Promise; + export function delay(promise: Promise, ms: number): Promise; + export function delay(value: T, ms: number): Promise; + export function isFulfilled(promise: Promise): bool; + export function isRejected(promise: Promise): bool; + export function isPending(promise: Promise): bool; + export function valueOf(promise: Promise): T; export function defer(): Deferred; - export function reject(): Promise; - export function promise(factory: { resolve: Function; reject: Function; notify: Function; }): Promise; - export function isPromise(value: any): bool; - export function async(generatorFunction: any): Deferred; - export function nextTick(callback: Function); - export var oneerror: any; - export var longStackJumpLimit: number; - export function resolve(object?: Promise); + export function reject(reason?): Promise; + export function promise(factory: { resolve: Function; reject: Function; notify: Function; }): Promise; + export function promised(callback: (...any) => T): (...any) => Promise; + export function isPromise(object): bool; + export function isPromiseAlike(object): bool; + export function isPending(object): bool; + export function async(generatorFunction: any): (...args) => Promise; + export function nextTick(callback: Function): void; + export var oneerror: () => void; + export var longStackSupport: bool; + export function resolve(object): Promise; } declare module "q" { diff --git a/q/q.module-tests.ts b/q/q.module-tests.ts deleted file mode 100644 index a589ca1d6..000000000 --- a/q/q.module-tests.ts +++ /dev/null @@ -1,75 +0,0 @@ -/// -/// -/// - -import q = module("q"); -import fs = module("fs"); - -q(8).then(x => console.log(x.toExponential())); - -var delay = function (delay) { - var d = q.defer(); - setTimeout(d.resolve, delay); - return d.promise; -}; - -q.when(delay(1000), function () { - console.log('Hello, World!'); -}); - -var eventually = function (eventually) { - return q.delay(eventually, 1000); -}; - -var x = q.all([1, 2, 3].map(eventually)); -q.when(x, function (x) { - console.log(x); -}); - -q.all([ - eventually(10), - eventually(20) -]) -.spread(function (x, y) { - console.log(x, y); -}); - -q.fcall(function () { }) -.then(function () { }) -.then(function () { }) -.then(function () { }) -.then(function (value4) { - // Do something with value4 -}, function (error) { - // Handle any error from step1 through step4 -}).done(); - -q.allResolved([]).then(function (promises: Q.Promise[]) { - promises.forEach(function (promise) { - if (promise.isFulfilled()) { - var value = promise.valueOf(); - } else { - var exception = promise.valueOf().exception; - } - }) -}); - -var initialVal: any; -var funcs = ['foo', 'bar', 'baz', 'qux']; -var result = q.resolve(initialVal); -funcs.forEach(function (f) { - result = result.then(f); -}); - -var replaceText = (text: string) => text.replace("a", "b"); - -q.nfcall(fs.readFile, "foo.txt", "utf-8").then(replaceText); - -q.ninvoke(fs, "readFile", "foo.txt", "utf-8").then(replaceText); - -var deferred = q.defer(); -fs.readFile("foo.txt", "utf-8", deferred.makeNodeResolver()); -deferred.promise.then(replaceText); - -var readFile = q.nfbind(fs.readFile); -readFile("foo.txt", "utf-8").then(replaceText); \ No newline at end of file