remove callback
This commit is contained in:
@@ -35,7 +35,7 @@ class MovieView extends View {
|
||||
private function set_movieUrl(value:String):String {
|
||||
movieUrl = value;
|
||||
new SwfLoader().GET(movieUrl)
|
||||
.success(function(data:MovieClip):Void {
|
||||
.then(function(data:MovieClip):Void {
|
||||
movie = data;
|
||||
});
|
||||
return movieUrl;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package haxework.net;
|
||||
|
||||
import haxework.net.callback.ICallback;
|
||||
import flash.system.Security;
|
||||
import flash.utils.ByteArray;
|
||||
import flash.display.LoaderInfo;
|
||||
@@ -23,15 +22,11 @@ class ExternalImageLoader extends BaseMediaLoader<BitmapData> {
|
||||
#end
|
||||
internalLoader = new InternalLoader();
|
||||
internalLoader.fromBytes(loader.contentLoaderInfo.bytes)
|
||||
.success(function(data:BitmapData):Void {
|
||||
var c:ICallback<BitmapData> = callback;
|
||||
dispose();
|
||||
c.callSuccess(data);
|
||||
.then(function(data:BitmapData):Void {
|
||||
resolve(data);
|
||||
})
|
||||
.fail(function(error:Dynamic):Void {
|
||||
var c:ICallback<BitmapData> = callback;
|
||||
dispose();
|
||||
c.callFail(e);
|
||||
.catchError(function(error:Dynamic):Void {
|
||||
throwError(e);
|
||||
});
|
||||
return null;
|
||||
#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;
|
||||
|
||||
import haxework.net.callback.ICallback;
|
||||
import promhx.Deferred;
|
||||
|
||||
typedef Order<T> = {
|
||||
var id:String;
|
||||
var data:Null<T>;
|
||||
var callbacks:Array<ICallback<T>>;
|
||||
var deferred:Deferred<T>;
|
||||
var clients:Int;
|
||||
}
|
||||
|
||||
interface IOrderSupplier {
|
||||
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;
|
||||
}
|
||||
@@ -1,12 +1,8 @@
|
||||
package haxework.net.order;
|
||||
|
||||
import haxework.net.callback.AutoCallback;
|
||||
import promhx.Deferred;
|
||||
import haxework.net.order.IOrderSupplier.Order;
|
||||
import haxework.storage.IStorage;
|
||||
import haxework.provider.Provider;
|
||||
import haxework.net.callback.Callback;
|
||||
import flash.display.BitmapData;
|
||||
import haxework.net.callback.ICallback;
|
||||
|
||||
class OrderSupplier implements IOrderSupplier {
|
||||
|
||||
@@ -18,43 +14,33 @@ class OrderSupplier implements IOrderSupplier {
|
||||
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)) {
|
||||
var order:Order<T> = orders.get(url);
|
||||
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;
|
||||
return cast orders.get(url).deferred;
|
||||
} else {
|
||||
return AutoCallback.success(order.data);
|
||||
}
|
||||
} else {
|
||||
var callback:ICallback<T> = new Callback<T>();
|
||||
var deferred = new Deferred<T>();
|
||||
var order:Order<T> = {
|
||||
id:url,
|
||||
data:null,
|
||||
callbacks:[callback],
|
||||
deferred:deferred,
|
||||
clients:1
|
||||
}
|
||||
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
||||
orders.set(url, order);
|
||||
var loader:ILoader<T> = buildLoader(clazz);
|
||||
loader.GET(url)
|
||||
.success(function(data:T):Void {
|
||||
.then(function(data:T):Void {
|
||||
if (orders.exists(url)) {
|
||||
var order:Order<T> = orders.get(url);
|
||||
order.data = data;
|
||||
for (callback in order.callbacks) callback.callSuccess(data);
|
||||
order.callbacks = [];
|
||||
order.deferred.resolve(data);
|
||||
}
|
||||
})
|
||||
.fail(function(error:Dynamic):Void {
|
||||
if (orders.exists(url)) for (callback in orders.get(url).callbacks) callback.callFail(error);
|
||||
.catchError(function(error:Dynamic):Void {
|
||||
if (orders.exists(url)) orders.get(url).deferred.throwError(error);
|
||||
orders.remove(url);
|
||||
});
|
||||
return callback;
|
||||
return deferred;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user