promises refactored

This commit is contained in:
Vladimir Enchev
2014-04-14 15:23:05 +03:00
parent 2cdad80094
commit 4f0e22c018
2 changed files with 107 additions and 109 deletions

View File

@ -1,6 +1,6 @@
export module Promises {
export function when(...promises: Promise[]): Promise {
export function when(...promises: Promise[]): Promise {
var all_done = new Deferred(); var all_done = new Deferred();
var results = []; var results = [];
var remaining = promises.length; var remaining = promises.length;
@ -25,9 +25,9 @@ export module Promises {
} }
return all_done.promise(); return all_done.promise();
} }
export class Promise { export class Promise {
constructor(private deferred: Deferred) { } constructor(private deferred: Deferred) { }
@ -37,9 +37,9 @@ export module Promises {
status(): string { return this.deferred.status() } status(): string { return this.deferred.status() }
result(): any[] { return this.deferred.result() } result(): any[] { return this.deferred.result() }
} }
export class Deferred { export class Deferred {
private resolved: Function[] = []; private resolved: Function[] = [];
private rejected: Function[] = []; private rejected: Function[] = [];
@ -109,6 +109,4 @@ export module Promises {
private notify(funcs: Function[], result: any[]): void { private notify(funcs: Function[], result: any[]): void {
funcs.map((f) => { f.apply(f, result) }); funcs.map((f) => { f.apply(f, result) });
} }
}
} }

View File

@ -3,7 +3,7 @@
*/ */
import image_module = require("Image/image"); import image_module = require("Image/image");
import promises_module = require("promises/promises"); import promises = require("promises/promises");
export class HttpClient { export class HttpClient {
/** /**
@ -24,7 +24,7 @@ export class HttpClient {
} }
public static getString(url : string) { public static getString(url : string) {
var d = new promises_module.Promises.Deferred(); var d = new promises.Deferred();
new HttpClient().getString(url, r => d.resolve(r), e => d.reject(e)); new HttpClient().getString(url, r => d.resolve(r), e => d.reject(e));
return d.promise(); return d.promise();
} }
@ -56,7 +56,7 @@ export class HttpClient {
private static get(url: string, successCallback?: (result: any) => void, errorCallback?: (e: Error) => void) { private static get(url: string, successCallback?: (result: any) => void, errorCallback?: (e: Error) => void) {
if (!successCallback && !errorCallback) if (!successCallback && !errorCallback)
{ {
var d = new promises_module.Promises.Deferred(); var d = new promises.Deferred();
HttpClient.getUrl(url, r => d.resolve(r), e => d.reject(e)); HttpClient.getUrl(url, r => d.resolve(r), e => d.reject(e));
return d.promise(); return d.promise();
} }