remove callback
This commit is contained in:
@@ -35,7 +35,7 @@ class MovieView extends View {
|
|||||||
private function set_movieUrl(value:String):String {
|
private function set_movieUrl(value:String):String {
|
||||||
movieUrl = value;
|
movieUrl = value;
|
||||||
new SwfLoader().GET(movieUrl)
|
new SwfLoader().GET(movieUrl)
|
||||||
.success(function(data:MovieClip):Void {
|
.then(function(data:MovieClip):Void {
|
||||||
movie = data;
|
movie = data;
|
||||||
});
|
});
|
||||||
return movieUrl;
|
return movieUrl;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package haxework.net;
|
package haxework.net;
|
||||||
|
|
||||||
import haxework.net.callback.ICallback;
|
|
||||||
import flash.system.Security;
|
import flash.system.Security;
|
||||||
import flash.utils.ByteArray;
|
import flash.utils.ByteArray;
|
||||||
import flash.display.LoaderInfo;
|
import flash.display.LoaderInfo;
|
||||||
@@ -23,15 +22,11 @@ class ExternalImageLoader extends BaseMediaLoader<BitmapData> {
|
|||||||
#end
|
#end
|
||||||
internalLoader = new InternalLoader();
|
internalLoader = new InternalLoader();
|
||||||
internalLoader.fromBytes(loader.contentLoaderInfo.bytes)
|
internalLoader.fromBytes(loader.contentLoaderInfo.bytes)
|
||||||
.success(function(data:BitmapData):Void {
|
.then(function(data:BitmapData):Void {
|
||||||
var c:ICallback<BitmapData> = callback;
|
resolve(data);
|
||||||
dispose();
|
|
||||||
c.callSuccess(data);
|
|
||||||
})
|
})
|
||||||
.fail(function(error:Dynamic):Void {
|
.catchError(function(error:Dynamic):Void {
|
||||||
var c:ICallback<BitmapData> = callback;
|
throwError(e);
|
||||||
dispose();
|
|
||||||
c.callFail(e);
|
|
||||||
});
|
});
|
||||||
return null;
|
return null;
|
||||||
#if flash} #end
|
#if flash} #end
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
package haxework.net.callback;
|
|
||||||
|
|
||||||
@:deprecated("Use promhx.Deffered")
|
|
||||||
class AutoCallback {
|
|
||||||
|
|
||||||
public static function success<T>(?value:T):ICallback<T> {
|
|
||||||
var callback:ICallback<T> = new Callback<T>();
|
|
||||||
callback.callSuccessAsync(value);
|
|
||||||
return callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function fail<T>(error:Dynamic):ICallback<T> {
|
|
||||||
var callback:ICallback<T> = new Callback<T>();
|
|
||||||
callback.callFailAsync(error);
|
|
||||||
return callback;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
package haxework.net.callback;
|
|
||||||
|
|
||||||
import haxe.Timer;
|
|
||||||
|
|
||||||
@:deprecated("Use promhx.Deffered")
|
|
||||||
class Callback<T> implements ICallback<T> {
|
|
||||||
|
|
||||||
public static function build<T>():ICallback<T> {
|
|
||||||
return new Callback<T>();
|
|
||||||
}
|
|
||||||
|
|
||||||
private var _success:Null<T -> Void>;
|
|
||||||
private var _fail:Null<Dynamic -> Void>;
|
|
||||||
|
|
||||||
public function new() {}
|
|
||||||
|
|
||||||
public function success(f:T -> Void):ICallback<T> {
|
|
||||||
_success = f;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function fail(f:Dynamic -> Void):ICallback<T> {
|
|
||||||
_fail = f;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function any(f:Dynamic -> Void):ICallback<T> {
|
|
||||||
_success = f;
|
|
||||||
_fail = f;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function callSuccess(data:T):Void {
|
|
||||||
try {
|
|
||||||
if (_success != null) _success(data);
|
|
||||||
} catch (error:Dynamic) {
|
|
||||||
callFail(error);
|
|
||||||
}
|
|
||||||
dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function callSuccessAsync(data:T):Void {
|
|
||||||
Timer.delay(function():Void {
|
|
||||||
callSuccess(data);
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function callFail(error:Dynamic):Void {
|
|
||||||
try {
|
|
||||||
if (_fail != null) _fail(error);
|
|
||||||
} catch (error:Dynamic) {
|
|
||||||
L.d("Callback", "", error);
|
|
||||||
}
|
|
||||||
dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function callFailAsync(error:Dynamic):Void {
|
|
||||||
Timer.delay(function():Void {
|
|
||||||
callFail(error);
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function glue(callback:ICallback<T>):ICallback<T> {
|
|
||||||
this._success = callback.callSuccess;
|
|
||||||
this._fail = callback.callFail;
|
|
||||||
//callback.dispose(); //ToDo:
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dispose():Void {
|
|
||||||
_success = null;
|
|
||||||
_fail = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
package haxework.net.callback;
|
|
||||||
|
|
||||||
import haxework.core.IDisposable;
|
|
||||||
|
|
||||||
@:deprecated("Use promhx.Deffered")
|
|
||||||
interface ICallback<T> extends IDisposable {
|
|
||||||
public function success(f:T -> Void):ICallback<T>;
|
|
||||||
public function fail(f:Dynamic -> Void):ICallback<T>;
|
|
||||||
public function any(f:Dynamic -> Void):ICallback<T>;
|
|
||||||
public function callSuccess(data:T):Void;
|
|
||||||
public function callSuccessAsync(data:T):Void;
|
|
||||||
public function callFail(error:Dynamic):Void;
|
|
||||||
public function callFailAsync(error:Dynamic):Void;
|
|
||||||
public function glue(callback:ICallback<T>):ICallback<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
package haxework.net.order;
|
package haxework.net.order;
|
||||||
|
|
||||||
import haxework.net.callback.ICallback;
|
import promhx.Deferred;
|
||||||
|
|
||||||
typedef Order<T> = {
|
typedef Order<T> = {
|
||||||
var id:String;
|
var id:String;
|
||||||
var data:Null<T>;
|
var data:Null<T>;
|
||||||
var callbacks:Array<ICallback<T>>;
|
var deferred:Deferred<T>;
|
||||||
var clients:Int;
|
var clients:Int;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IOrderSupplier {
|
interface IOrderSupplier {
|
||||||
public var orders(default, null):Map<String, Order<Dynamic>>;
|
public var orders(default, null):Map<String, Order<Dynamic>>;
|
||||||
|
|
||||||
public function request<T>(url:String, clazz:Class<T>):ICallback<T>;
|
public function request<T>(url:String, clazz:Class<T>):Deferred<T>;
|
||||||
public function release(url:String, ?force:Bool = false):Void;
|
public function release(url:String, ?force:Bool = false):Void;
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,8 @@
|
|||||||
package haxework.net.order;
|
package haxework.net.order;
|
||||||
|
|
||||||
import haxework.net.callback.AutoCallback;
|
import promhx.Deferred;
|
||||||
import haxework.net.order.IOrderSupplier.Order;
|
import haxework.net.order.IOrderSupplier.Order;
|
||||||
import haxework.storage.IStorage;
|
|
||||||
import haxework.provider.Provider;
|
|
||||||
import haxework.net.callback.Callback;
|
|
||||||
import flash.display.BitmapData;
|
import flash.display.BitmapData;
|
||||||
import haxework.net.callback.ICallback;
|
|
||||||
|
|
||||||
class OrderSupplier implements IOrderSupplier {
|
class OrderSupplier implements IOrderSupplier {
|
||||||
|
|
||||||
@@ -18,43 +14,33 @@ class OrderSupplier implements IOrderSupplier {
|
|||||||
orders = new Map<String, Order<Dynamic>>();
|
orders = new Map<String, Order<Dynamic>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function request<T>(url:String, clazz:Class<T>):ICallback<T> {
|
public function request<T>(url:String, clazz:Class<T>):Deferred<T> {
|
||||||
if (orders.exists(url)) {
|
if (orders.exists(url)) {
|
||||||
var order:Order<T> = orders.get(url);
|
return cast orders.get(url).deferred;
|
||||||
order.clients++;
|
|
||||||
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
|
||||||
if (order.data == null) {
|
|
||||||
var callback:ICallback<T> = new Callback<T>();
|
|
||||||
order.callbacks.push(callback);
|
|
||||||
return callback;
|
|
||||||
} else {
|
|
||||||
return AutoCallback.success(order.data);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
var callback:ICallback<T> = new Callback<T>();
|
var deferred = new Deferred<T>();
|
||||||
var order:Order<T> = {
|
var order:Order<T> = {
|
||||||
id:url,
|
id:url,
|
||||||
data:null,
|
data:null,
|
||||||
callbacks:[callback],
|
deferred:deferred,
|
||||||
clients:1
|
clients:1
|
||||||
}
|
}
|
||||||
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
||||||
orders.set(url, order);
|
orders.set(url, order);
|
||||||
var loader:ILoader<T> = buildLoader(clazz);
|
var loader:ILoader<T> = buildLoader(clazz);
|
||||||
loader.GET(url)
|
loader.GET(url)
|
||||||
.success(function(data:T):Void {
|
.then(function(data:T):Void {
|
||||||
if (orders.exists(url)) {
|
if (orders.exists(url)) {
|
||||||
var order:Order<T> = orders.get(url);
|
var order:Order<T> = orders.get(url);
|
||||||
order.data = data;
|
order.data = data;
|
||||||
for (callback in order.callbacks) callback.callSuccess(data);
|
order.deferred.resolve(data);
|
||||||
order.callbacks = [];
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.fail(function(error:Dynamic):Void {
|
.catchError(function(error:Dynamic):Void {
|
||||||
if (orders.exists(url)) for (callback in orders.get(url).callbacks) callback.callFail(error);
|
if (orders.exists(url)) orders.get(url).deferred.throwError(error);
|
||||||
orders.remove(url);
|
orders.remove(url);
|
||||||
});
|
});
|
||||||
return callback;
|
return deferred;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user