我正在使用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?或者这个问题是否有完全不同但更好的解决方案?
答案 0 :(得分:1)
使用AsyncToken跟踪返回的数据对http://flexdiary.blogspot.com/2008/11/more-thoughts-on-remoting.html
的调用答案 1 :(得分:0)
当我想在异步庄园中存储数据时,我把它放在一个数组中,然后创建一个函数,在我发送它时“弹出”该元素。
此函数将在完成和错误事件时调用
是的我知道可能存在服务器和数据丢失的问题,但很好。那也可以处理
但事件总是会触发,它可能不是一个被触发的完整事件,但可能是一个错误事件
一旦数组为空,该功能就完成了。