异步访问器

时间:2012-10-10 17:39:47

标签: architecture asynchronous functional-programming

问题:可以使用哪些技术来实现异步返回值的函数?

无效的预期效果代码(在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中,这似乎无法实现。我一直在研究continuation,互斥体,并发编程,试图在ActionScript中找到相当于“yield”的内容,看看是否可以使用协同程序,但绝对没有用。

1 个答案:

答案 0 :(得分:0)

您可以切换到续续传递样式并使用setTimeout