我想在无限循环中访问web服务:getMonitorData(),并在creationcomplete上返回数组,并且每次都会更新getIndex0.text。替换Flex中的无限循环
Flex不能处理无限循环,并给出超时错误1502.如果我运行for循环,直到我< 2000左右,它工作正常。
如何更换循环,以便我的webservice连续访问,结果显示在getIndex0.text中。
这是我的应用程序看起来像:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
xmlns:plcservicebean="server.services.plcservicebean.*"
creationComplete="clientMonitor1()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.CallResponder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable] public var dbl0:Number;
//-----------Infinite Loop, Works fine if condition = i<2000------------------------
public function clientMonitor1():void{
for(var i:int = 0; ; i++){
clientMonitor();
}
}
public function clientMonitor():void{
var callResp:CallResponder = new CallResponder();
callResp.addEventListener(ResultEvent.RESULT, monitorResult);
callResp.addEventListener(FaultEvent.FAULT, monitorFault);
callResp.token = plcServiceBean.getMonitorData();
}
public function monitorResult(event:ResultEvent):void{
var arr:ArrayCollection = event.result as ArrayCollection;
dbl0 = arr[0].value as Number;
}
protected function monitorFault(event:FaultEvent):void{
Alert.show(event.fault.faultString, "Error while monitoring Data ");
}
]]>
</fx:Script>
<fx:Declarations>
<plcservicebean:PlcServiceBean id = "plcServiceBean"
showBusyCursor="true"
fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" />
</fx:Declarations>
<mx:Form x="52" y="97"
label="Double">
<mx:FormItem label = "getMonitorValue">
<s:TextInput id = "getIndex0"
text = "{dbl0}"/>
</mx:FormItem>
</mx:Form>
</s:Group>
谢谢Andrew,我使用Data-> Connect to webservice生成了我的Web服务连接类。生成的类没有事件处理程序。你能给我一个例子如何生成一个。我想持续监视Web服务clientMonitor()。 – 2010-06-21 16:31:40
@H P:恐怕我从来没有使用网络服务代码生成工具,对不起。 – 2010-06-21 21:34:08