FLEX 执行脚本超时

zhouyan024 2009-11-27 01:27:20
flex 将文件的数据导入到数据库,数据10000条导入失败,200条成本,失败时的提示信息是:Error #1502: 脚本的执行时间已经超过了 15 秒的默认超时设置。
很困扰,在线等
...全文
656 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
大_A 2012-04-25
  • 打赏
  • 举报
回复
很好啊,,遇到这样的问题了,准备分段读取数据
hongzzx 2011-06-02
  • 打赏
  • 举报
回复
将大任务分解成小任务,把小任务丢到任务队列里执行:

/**
* 由于存在 15 秒执行限制,对于大任务,采用任务队列的方式执行
*/
public class TimerExecutor
{
private var timer:Timer;
private var tasks:Vector.<Object>=new Vector.<Object>();

public function TimerExecutor(delay:int=100)
{
this.timer=new Timer(delay);

this.timer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void
{
if (tasks.length > 0)
{
var task:Object=tasks.shift();
(task.func as Function).apply(task.thisObj, task.params);
}
});

this.timer.start();
}

public function addTask(func:Function, thisObj:Object=null, params:Array=
null):void
{
this.tasks.push({func: func, thisObj: thisObj, params: params});
}

}

xiancaoidfsd 2010-10-19
  • 打赏
  • 举报
回复
引用自:Einesce

public function accumulation(root:INode, stack:Array):void{
var x;
var y;
while(stack.length > 0){
v = INode(stack.pop());
// 省略部分操作 使用了x,y,root
var pred:Array = 获取pred的方法;
for(var i:int = 0; i<pred.length; i++){
// do something
}
}
}

////////////////////////////////////
public function accumulation(root:INode, stack:Array):void{
var x;
var y;
var finishCount :int = 0;
var j:int = 0;
var total:int = 0;
while(stack.length > 0){
v = INode(stack.pop());
// 省略部分操作 使用了x,y,root
var pred:Array = 获取pred的方法;
total += pred.length;
for(var i:int = 0; i<pred.length; i++){
TweenLite.to ( pred[i] , 0 , { delay:延遲時間.01*j , onComplete:count } );
j++;
}
}

function count ():void {
//這里就是你之前的dosomething 已經延遲處理
finishCount ++;
if ( finishCount >= total ) {
//所有的完成了。
}
}
}



簡單的可以借助一下TweenLite類的延時來處理
加一個j記錄每個循環體執行的編號根據這個來確定這個循環體延遲的時間。

我还想到一个取巧的办法,就是定义一个root 和 stack的全局副本,rootCopy,stackCopy, 然后将accumulation方法的参数赋予rootCopy,stackCocy,
这样在计时器的回调函数loop 中使用rootCopy,stackCocy 就可以了 o(∩_∩)o...

好像还有setTimeout(setTimeout(closure:Function, delay:Number, ... arguments))方法可以 给操作函数传递参数,相当于只执行一次的Timer~~~~ 不过没有试过这个办法:)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧