Haxe で非同期処理のコールバックはどう書けば?


Java みたいにコールバックの interface を定義しても匿名クラスが使えない?みたいだし、JavaScript みたいに function を Dynamic で渡すのも型安全じゃない。。。。

こうすればいいのか!

// 呼ばれる方
public function sendRequest(path:String, 
    onSuccess:String->Void, onError:String->Void) : Void {
    // 成功
    onSuccess("yeah!");
    // 失敗
    onError("oops…");
}


// 呼ぶ方
sendRequest("http://hoge", 
    function(data:String):Void {
        // 成功した時、呼ばれる
        trace(data);
    },
    function(err:String):Void {
        // 失敗した時、呼ばれる
        trace(err);
    }
)

これなら呼ぶ方で function の定義を間違えると、コンパイル時にエラーにしてくれる。

Proxy - Haxe http://haxe.org/doc/proxy にそんな感じで書いてあった。