56 lines
1.1 KiB
Haxe
Executable File
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;
|
|
}
|
|
}
|