Actionscript 3:如何进行多个异步Web服务调用请求

时间:2011-07-26 14:02:42

标签: flex web-services actionscript-3

我正在使用Flex和Actionscript 3,以及Webservices,rpc和callResponder。我希望能够,例如,说:

loadData1();  // Loads webservice data 1
loadData2();  // Loads webservice data 2
loadData3();  // Loads webservice data 3

但是,Actionscript 3适用于异步事件,因此对于每个调用,您需要等待ResultEvent在完成时触发。因此,我可能希望每次事件完成时都执行下一个请求。但是,我担心可能会出现线程问题,有些事件可能根本不会发生。我不认为我在解释方面做得很好,所以我会尝试展示一些代码:

    private var service:Service1;
    var cp:CallResponder = new CallResponder();

    public function Webservice()
    {
        cp.addEventListener(ResultEvent.RESULT, webcalldone);
        service = new Service1();
    }
    public function doWebserviceCall()
    {
        // Check if already doing call, otherwise do this:
        cp.token = service.WebserviceTest_1("test");    
    }   
    protected function webcalldone(event:ResultEvent):void
    {
        // Get the result
        var result:String = cp.lastResult as String;

        // Check if other calls need to be done, do those
    }

现在,我可以将动作保存在一个arraylist中,但是可以说addToArrayList和检查是否有其他调用可以互相混淆,或者只是错过对方,从而停止执行?有没有像易变的Arraylist?或者这个问题是否有完全不同但更好的解决方案?

2 个答案:

答案 0 :(得分:1)

使用AsyncToken跟踪返回的数据对http://flexdiary.blogspot.com/2008/11/more-thoughts-on-remoting.html

的调用

答案 1 :(得分:0)

当我想在异步庄园中存储数据时,我把它放在一个数组中,然后创建一个函数,在我发送它时“弹出”该元素。
此函数将在完成和错误事件时调用 是的我知道可能存在服务器和数据丢失的问题,但很好。那也可以处理 但事件总是会触发,它可能不是一个被触发的完整事件,但可能是一个错误事件 一旦数组为空,该功能就完成了。