2013-08-30 57 views
0
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循環訪問數組

+0

聽起來像你需要等待得到一個響應,然後再繼續下一個 – Ronnie

+0

看起來範圍是你的問題。 –

+0

我認爲Ronnie是對的,動作腳本中的所有調用都是異步的,需要等待才能繼續執行結果。現在每個服務都以某種方式停留在堆棧上,並且在循環之後它開始逐一地在結果lisnter上得到結果,但srvs變量沒有這樣做,它只保留最後一個值。 – johnny

回答

0

此代碼位於何處? 這是最後一個項目,因爲最後一個是唯一的一個。您一直覆蓋var webs:WebService,因此第一個不再存在,因此不存在對它的引用。

+0

srvs是一個公共變量,我想要的是對於事件監聽器結果中的每個循環,srvs和service名稱都是相同的。當循環完成控制去結果監聽器和第一個結果集是「附件服務」這是我上面的代碼中的數組中的第一個元素,但srvs變量是alwasy最後一個變量是「服務」在我的陣列。我想要保存wsdl結果和srvs變量的附件值。希望現在清楚。如果不是,請讓我知道我會嘗試以其他方式解釋。謝謝 – johnny