をターゲットするために待つ私は現在、このコードを持っている:私はそれを実行しようとするとhaXeの - どのように非同期を実装しないフラッシュが
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;
}
}
、それはのawaitで待機、および関数からリターンしません。どのようにして@awaitを実際に実行させ、値が非同期呼び出しから解決されるまで関数の外部で実行を停止するには?
Lib used: https://github.com/proletariatgames/haxe-continuation
これはその使用方法です。私はコールバックを捨てることを望んでいました。 – seang
私はあなたの質問を理解していません。 '@ await'で' fetchText'を呼び出すと、すでにこれを行っています。 – KevinResoL