早上好stackoverflow .. 我有一个问题...我想循环一个服务调用,以便它可以动态填充我的数组..这是我的样本代码
var i:Number = new Number();
{
for(i=0;i<facilityIDArray.length;i++){
getEventsFromFacilityIDResult.token = currenteventService.getEventsFromFacilityID(facilityIDArray.getItemAt(i));
getEventsFromFacilityIDResult.addEventListener(ResultEvent.RESULT,toShowArray);
}
然后这是服务调用
调用的函数{ public function toShowArray(event:ResultEvent):void {
var i:Number = new Number();
var obj:Object = new Object();
var tempArray:ArrayCollection = new ArrayCollection();
tempArray = getEventsFromFacilityIDResult.lastResult;
if(tempArray != null){
for(i=0;i<tempArray.length;i++){
obj = tempArray.getItemAt(i);
obj.id = int(localIDArray.length -1);
showArray.addItem(obj);
}
}
}
} ..
这里发生的主要事情只是最后一次调用将被添加到showArray 其他电话被忽视了..请你帮帮我
答案 0 :(得分:1)
每次结果从所谓的HTTPService上的send调用返回时,您将向该一个HTTPService对象添加多个侦听器,将调用每个侦听器,因此将多次调用toShowArray(每次单独请求)。根据showArray初始化的位置,可能是您在返回调用之间重新实例化它。在toShowArray方法中放置一个断点,它调用了多少次(每次调用时showArray为空,为什么?),这似乎不是一个好方法。为什么服务不返回完整集而不是发出一堆单独的请求并尝试无序处理每个响应(因为调用是Asynch知道哪一个将在不可能时返回,此外浏览器和操作系统限制打开的TCP / IP连接数,因此在许多情况下,您只能从客户端打开2个并发请求。此外,当您将代码粘贴到stackoverflow中时,粘贴完整代码然后突出显示所有代码(使用鼠标或键盘全部选择)并点击文本区域上方的代码按钮,这将使您更轻松地帮助您进入回答。解释你编写的未包含在代码中的部分,IE getEventsFromFacilityIDResult我必须根据侦听器和你引用的属性来假设它是什么类型的对象。