小编inf*_*ris的帖子

将Web服务结果与Flex中的请求进行匹配

在我得到问题之前,有点(!)的背景知识:

我有一个手风琴控件加载了一个网格数组,每个网格都是延迟加载的数组.我正在使用自动生成的Web服务代理来检索这些列表.我希望用户能够更改手风琴中选定的孩子而无需等待Web服务响应.我最初对所有请求使用相同的代理实例,并按照它们的顺序跟踪请求,但问题是较短的数组从服务器返回得更快,因此请求的顺序变得无关紧要.

在处理代理结果事件时,我找不到一种明确的方法来确定原始请求,所以我最终得到的是一个处理手风琴上的change事件的函数,实例化一个新的webservice代理,将其推送到哈希表中.所选子项的索引,然后添加一个闭包作为事件处理程序.即有点像这样的东西:

private proxyTable:Object = new Object();
private function PopulateThingGrid(index:Number):void
{
    var grid:ThingGrid = myAccordion.getChildAt(index) as ThingGrid;
    grid.things = ArrayCollection(proxyTable[index].getThings_lastResult);
}

private function SendThingRequest(index:int):void
{
    var grid:ThingGrid= myAccordion.getChildAt(index) as ThingGrid;
    if (grid.things.length == 0)
    {
        if (proxyTable[index] == null)
        {
            proxyTable[index] = new MyWebServiceProxy();
        }
        var proxy:MyWebServiceProxy= proxyTable[index];
        proxy.addgetThingsEventListener(function ():void { PopulateThingGrid(index); });

        var list:ThingList = thingLists.getItemAt(index) as ThingList;
        proxy.getThings("thinglist", list.ListID);
    }
}

private function myAccordion_Change(event:IndexChangedEvent):void
{
    SendThingRequest(event.newIndex);
}
Run Code Online (Sandbox Code Playgroud)

(我试图对此进行匿名处理,所以我可能错过了一些东西,但希望你能得到这个想法)

那么,对于问题:是否有更简单的方法将代理结果与我刚刚遗漏的原始请求相匹配?

如果没有,我做得合理吗?我有点担心代理实例的数量,我可以最终生成然后正确处理它们(当有必要时) - 是否有任何我可能不知道的陷阱?

更新: 我认为问题可能出现,因为生成的代理代码从flash.events.Event而不是mx.rpc.events.ResultEvent继承ResultEvents.我不完全确定它为什么这样做 - 访问AsyncToken的唯一方法是它最初由方法调用返回.

apache-flex actionscript asynchronous web-services

3
推荐指数
1
解决办法
1996
查看次数

如何在不访问源代码的情况下确定Oracle查询?

我们有一个带有Oracle后端的系统,我们可以访问它(虽然可能不是管理访问权限)和我们没有源代码的前端.数据库非常庞大,不易理解 - 我们没有文档.我对甲骨文一般也不是特别了解.

前端的一个方面向数据库查询特定数据集并显示它.我们需要确定正在进行的查询,以便我们可以在没有前端的情况下复制和自动化它(例如,通过定期生成csv文件).

您将使用哪些方法来确定检索此数据集所需的SQL?

目前我倾向于使用EeePC,Wireshark和集线器(在客户端机器上安装Wireshark可能无法实现),但我很想听到任何其他想法以及是否有人能想到这个特定的任何陷阱做法.

sql oracle networking

2
推荐指数
2
解决办法
7354
查看次数