+ -
当前位置:首页 → 问答吧 → 两个函数的执行问题

两个函数的执行问题

时间:2011-03-24

来源:互联网

在一个页面onload的时候,需要在服务器生成一个文件夹并打开。
JScript code

window.onload = function()
{
    var myFolderName = getFolderName();
    CreateFolder(myFolderName);
    alert('------------');
    OpenFolder('/' + ProtectPath( myFolderName ) + '/');
}



如上代码运行时,弹出框确定后,一切OK,新建成的文件夹被打开(也说明创建文件夹和打开文件夹的方法都是正确的)。

现象:
当把JScript code
alert('------------');
去掉的时候,就不能打开新建的Folder,实际上myFolderName文件夹也是存在的。

猜想:
CreateFolder方法并没有真正的立即去生成文件夹,而alert的某种机制可以让CreateFolder方法先去彻底完成文件夹的创建,之后在去OpenFolder没问题。而一旦去掉alert这一行代码,OpenFolder的时候文件夹还没有真正生成(当然最终还是生成了myFolderName文件夹)。而alert的某种机制可以让CreateFolder方法先去彻底完成文件夹的创建。

问题:
这个问题该如何解决?即让CreateFolder执行完毕之后再来执行OpenFolder,而不需要alert弹对话框?

附:我已经尝试OpenFolder的时候设置timeout时间也是无效的。

作者: fsolsh   发布时间: 2011-03-24

楼主 CreateFolder(myFolderName);
 做了什么事啊?

很明显是 下面方法有引用上面方法创建的对象!

执行下面方法时,先判断创建的对象是否加载完成!

可以用 setTimeout(fun,10); 递归判断!

var isLoad=false;

function HasLoad(){
if(isLoad){ OpenFolder('/' + ProtectPath( myFolderName ) + '/');
}else{
setTimeout(HasLoad,10);
}
}


window.onload = function()
{
  var myFolderName = getFolderName();
  CreateFolder(myFolderName);
  HasLoad();
}


-- 当然不知道你的代码,我写的也是伪代码!
你自己 写 是否 加载完的逻辑

作者: hch126163   发布时间: 2011-03-24