【发布时间】:2011-09-26 15:26:18
【问题描述】:
我正在调试一些代码并看到一个循环,其中调度了一个事件并为每条记录进行了远程调用。
在有数百条记录(确切地说是 700 条)之前一切正常。这会让flash播放器大吃一惊吗?我应该转移到排队系统吗?多少条记录太多了?
感谢您提供任何有用的提示。
这是发送连续调用的更新方法:
var counter:int= 0;
for each ( var item:ObjectVo in itemColl)
{
counter = counter + 1;
var evt:DataValidationEvent = new DataValidationEvent();
evt.myItem = item;
evt.eventType = DataValidationEvent.EVENT_TYPE_PASTE_FROM_EXCEL
if( counter == ( itemColl.length ) ){
evt.isLastCall=true;
}else{
evt.isLastCall=false;
}
evt.dispatch();
}
这是事件处理程序。在 'isLastCall' 设置为 true 之后,它只会被调用一次。
private function addItemsFromList( item:itemVo ):void{
var myObj:ObjVo = new ObjVo();
myObj.description = item.description;
myObj.rule = item.objRule;
this.itemsColl.addItem( myObj );
this.itemsColl.itemUpdated( myObj );
this.itemsColl.refresh();
}
【问题讨论】:
-
这似乎是一个有用的链接:help.adobe.com/en_US/as3/mobile/…
-
您的问题含糊不清。你说在有 700 个电话之前没问题,暗示这是电话的数量,但你问这是否是问题所在。你有没有进一步调查?是通话次数吗?能不能把远程调用换成本地调用,看看能不能用?
-
我刚刚对应用进行了分析,完成该过程大约需要 15 分钟。当我尝试使用较小的集合(即 50 条记录)时,大约需要 2 分钟才能完成。所以是的,它与调用次数有关。而且我无法用本地调用替换远程调用,因为我的机器上没有设置服务器。
标签: actionscript-3 apache-flex flex3