首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AsyncToken和AsyncResponder

使用AsyncToken和AsyncResponder
EN

Stack Overflow用户
提问于 2012-10-16 14:20:47
回答 2查看 548关注 0票数 0

我想要得到一个层次结构的两级结果。首先AsyncToken的结果是Ok的,然后我设置了一个for循环,并在每个循环步骤中以相同的方式调用下一级结果。这就是问题所在,token2.addResponder(responder2);从来不会在每个循环步骤上按时返回结果。它发送给我的结果毕竟是for循环的结果。但我每一步都需要。你能告诉我我错了吗?

代码语言:javascript
复制
public function getChildResultHandler(event:ResultEvent, token:Object=null ):void
{
        myObject=event.result;  //first asynToken result is Ok
        var myArrayCol:ArrayCollection=new ArrayCollection();               
        myArrayCol=ArrayCollection(myObject);
        var mlObject:MLObject=new MLObject();  

        var i:int;
        for(i=0;i<myArrayCol.length;i++)
        {
            mlObject=myArrayCol[i]; 

            if (mlObject.Type=="Bin")
            {
                token2=new AsyncToken(null);
                token2=myService.GetChildObjects(sessionID,mlObject.ObjectID);
                responder2=new  AsyncResponder(getNextLevelChild,getChildFaultHandler);
                token2.addResponder(responder2);
            // I cant get results here 
            // this query goes to getNextLevelChild func after for loop results
            }
        }
    } 

我是否必须等待两个结果,如果是,我如何等待响应者或令牌?

EN

回答 2

Stack Overflow用户

发布于 2012-10-18 18:12:04

因为,这些都是异步调用。不可能知道返回结果的顺序。可能是第一个呼叫将首先结束,也可能是第二个呼叫。

因此,我们必须等待所有异步调用的结束时间才能获得正确的结果。

票数 0
EN

Stack Overflow用户

发布于 2013-02-17 17:00:04

tutorial可能会有所帮助,因为它解决的问题与您正在经历的问题非常相似。有3个远程过程调用传入字母ABC。这些调用以BAC的顺序返回。本教程演示了如何使用ASyncToken和响应器来确定哪个结果处理程序正在为哪个调用触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12908645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档