ich zur Zeit diesen Code habe:Haxe - Wie Sie async für Flash implementieren Sie erwarten Ziele
package sage.sys;
import com.dongxiguo.continuation.Async;
#if flash
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
#end
class FileSystem implements Async
{
public static function fetchText(url:String, callback:String->Void) : Void
{
var urlLoader = new URLLoader();
var onLoaderError = function(e : Event) : Void {
callback(e.type);
};
urlLoader.addEventListener(Event.COMPLETE, function(_) : Void {
callback(Std.string(urlLoader.data));
});
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onLoaderError);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onLoaderError);
try {
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.load(new URLRequest(url));
}
catch (e : Dynamic)
{
callback(Std.string(e));
}
}
@async
public static function fetch(url:String):String
{
var result = @await fetchText(url);
return result;
}
}
Wenn ich versuche, es zu laufen, es wartet nicht auf der Warte und kehrt aus der Funktion. Wie kann ich erreichen, dass sich @dait tatsächlich selbst durchsetzt und nicht mehr außerhalb der Funktion läuft, bis der Wert vom asynchronen Aufruf aufgelöst wird?
Lib used: https://github.com/proletariatgames/haxe-continuation
So wurde es verwendet. Ich hatte gehofft, den Rückruf rückgängig zu machen. – seang
Ich verstehe deine Frage nicht. Das hast du schon gemacht, als du 'fetchText' mit' @warte' aufgerufen hast – KevinResoL