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);
}
正如您在代碼事件偵聽器中所看到的,每次都會添加並且WSDL每次都在更改。問題在於循環何時完成控制轉到結果事件監聽器,其結果來自第一個WSDL,但循環中的最後一個變量保留了數組的最後一個元素,而不是第一個元素作爲WSDL結果。我希望你們的問題很明確,謝謝。我在flex中使用動作腳本使用每個項目的相同eventlistener循環訪問數組
聽起來像你需要等待得到一個響應,然後再繼續下一個 – Ronnie
看起來範圍是你的問題。 –
我認爲Ronnie是對的,動作腳本中的所有調用都是異步的,需要等待才能繼續執行結果。現在每個服務都以某種方式停留在堆棧上,並且在循環之後它開始逐一地在結果lisnter上得到結果,但srvs變量沒有這樣做,它只保留最後一個值。 – johnny