0

質問:非同期で値を返す関数を実装するために使用できる手法は何ですか?

目的の効果の無効なコード(ActionScriptで... Prettifyを言い訳):

public function get item() : InventoryItem {
    return InventoryItem.find(this.id);
}

public class InventoryItem {
    public static function find(id : int) : InventoryItem {
        var statement:SQLStatement = statementCreator.create('FIND_BY_ID');
        statement.parameters['@id'] = id.toString();
        statement.addEventListener(SQLEvent.RESULT, 
            function (event : SQLEvent) : InventoryItem {
                // find returns from here
                return (event.target as SQLStatement).getResult().data[0] as InventoryItem;
            });
        statement.execute();
    }
}

背景:私は現在Flexを使用していますが、常に問題が発生します。非同期関数またはコールバックでさえ、アクセサー関数または別の関数からの戻り値を使用する他の関数に値を返す必要があります。

Flexでは、これを実装することは不可能のようです。私は継続、ミューテックス、並行プログラミングを調べ、コルーチンを使用できるかどうかを確認するためにActionScriptで「yield」に相当するものを見つけようとしましたが、まったく役に立ちませんでした。

4

1 に答える 1

0

継続渡しスタイルに切り替えて使用できますsetTimeout

于 2013-02-05T01:40:55.203 に答える