我現在有這樣的代碼:HAXE - 如何實現異步等待對Flash瞄準
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