Promises added and implemented experimentally in WebClient

This commit is contained in:
Vladimir Enchev
2014-04-14 14:44:30 +03:00
parent aebd12057e
commit f7b5c9af3e
5 changed files with 141 additions and 5 deletions

View File

@ -4,8 +4,8 @@
import image_module = require("Image/image");
export declare class Client {
private static get(url: string, successCallback: (result: any) => void, errorCallback?: (e: Error) => void)
getString(url: string, successCallback: (result: string) => void, errorCallback?: (e: Error) => void)
getJSON(url: string, successCallback: (result: Object) => void, errorCallback?: (e: Error) => void)
getImage(url: string, successCallback: (result: image_module.Image) => void, errorCallback?: (e: Error) => void)
private static get(url: string, successCallback?: (result: any) => void, errorCallback?: (e: Error) => void)
getString(url: string, successCallback?: (result: string) => void, errorCallback?: (e: Error) => void)
getJSON(url: string, successCallback?: (result: Object) => void, errorCallback?: (e: Error) => void)
getImage(url: string, successCallback?: (result: image_module.Image) => void, errorCallback?: (e: Error) => void)
}

View File

@ -3,6 +3,7 @@
*/
import image_module = require("Image/image");
import promises_module = require("Promises/promises");
export class Client {
/**
@ -22,6 +23,12 @@ export class Client {
}
}
public static getString(url : string) {
var d = new promises_module.Promises.Deferred();
new Client().getString(url, r => d.resolve(r), e => d.reject(e));
return d.promise();
}
public getJSON(url: string, successCallback: (result: Object) => void, errorCallback?: (e: Error) => void) {
try {
this.getString(url, function (data) {
@ -46,7 +53,18 @@ export class Client {
}, errorCallback);
}
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)
{
var d = new promises_module.Promises.Deferred();
Client.getUrl(url, r => d.resolve(r), e => d.reject(e));
return d.promise();
}
Client.getUrl(url, successCallback, errorCallback);
}
private static getUrl(url: string, successCallback: (result: any) => void, errorCallback?: (e: Error) => void) {
try {
var sessionConfig = Foundation.NSURLSessionConfiguration.defaultSessionConfiguration();
var queue = Foundation.NSOperationQueue.mainQueue();