Files
haxework/haxework/net/callback/Callback.hx
2013-11-05 17:08:50 +04:00

56 lines
1.1 KiB
Haxe
Executable File

package haxework.net.callback;
import haxe.Timer;
class Callback<T> implements ICallback<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 callSuccess(data:T):Void {
try {
if (_success != null) _success(data);
} catch (error:Dynamic) {
callFail(error);
}
}
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) {
trace(error);
}
}
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;
return this;
}
}