Actionscript 3 对每个项使用相同的eventlistener循环数组集合

Actionscript 3 对每个项使用相同的eventlistener循环数组集合,actionscript-3,flash-builder,Actionscript 3,Flash Builder,正如您在代码中看到的,事件监听器每次都被添加,WSDL每次都在更改。问题是,当循环完成时,控件将与来自第一个WSDL的结果一起传递给结果事件侦听器,但循环中的最后一个变量将数组的最后一个元素而不是第一个元素作为WSDL结果。我希望你们的问题很清楚,谢谢。我在flex中使用了动作脚本,代码放在哪里? 它将转到最后一项,因为最后一项是唯一的。您一直在覆盖var-webs:WebService,因此第一个已不存在,也没有对它的引用。听起来您需要等待响应才能继续下一个。范围似乎是您的问题。我认为Ronn

正如您在代码中看到的,事件监听器每次都被添加,WSDL每次都在更改。问题是,当循环完成时,控件将与来自第一个WSDL的结果一起传递给结果事件侦听器,但循环中的最后一个变量将数组的最后一个元素而不是第一个元素作为WSDL结果。我希望你们的问题很清楚,谢谢。我在flex中使用了动作脚本,代码放在哪里?
它将转到最后一项,因为最后一项是唯一的。您一直在覆盖
var-webs:WebService
,因此第一个已不存在,也没有对它的引用。

听起来您需要等待响应才能继续下一个。范围似乎是您的问题。我认为Ronnie是对的,ActionScript中的所有调用都是异步的,需要等待获得结果后才能继续。现在,每个服务都以某种方式停留在堆栈上,在循环之后,它开始一个接一个地出现在result lisnter上,但srvs变量没有这样做,它只保留最后一个值;这种方法永远不会奏效。知道吗?srvs是一个公共变量,我想要的是事件侦听器结果中每个循环的srvs和服务名称都相同。当循环完成时,控制转到结果侦听器,第一个结果集是“附件服务”,它是我上面代码中数组中的第一个元素,但srvs变量始终是我数组中的最后一个变量,它是“服务”。我想保留wsdl结果和srvs变量的附件值。希望现在一切都清楚了。如果没有,请让我知道,我将尝试以其他方式解释。谢谢
var lstservices:Array = ["Attachment","Dev","Domain","service"]
    for each(var servicename:String in lstservices)
            {

            var webs:WebService = new WebService();
            var url:String= "http://XXXX/XXXX/"+ servicename +".asmx?wsdl";
            webs.wsdl = url;    
            webs.loadWSDL();
            webs.addEventListener(FaultEvent.FAULT,fault);
            webs.addEventListener(ResultEvent.RESULT,GetDataFromService);
            webs.makeObjectsBindable=false;
            webs.GetAll();
            srvs = servicename.substr(0,servicename.length-7);

            }