Javascript 等待函数加载
当javascript函数完全加载时,我如何在jQuery中进行测试?Javascript 等待函数加载,javascript,jquery,Javascript,Jquery,当javascript函数完全加载时,我如何在jQuery中进行测试? 我想使用gif,它在javascript函数加载时显示加载,并在函数完全加载时隐藏它?定义函数后,请自己调用。函数定义后的语句将仅在读取(并因此执行)前面的源文本后执行。我不确定加载是什么意思,但以下内容仍应适用: 开始加载JavaScript代码时,显示GIF 在加载的代码中,添加一条语句以隐藏结尾处的GIF 这将以一种“简单”的方式解决您的问题,而不必使用计时器等。请参阅类似的问题:运行函数时重新显示动画gif:您的意思
我想使用gif,它在javascript函数加载时显示加载,并在函数完全加载时隐藏它?定义函数后,请自己调用。函数定义后的语句将仅在读取(并因此执行)前面的源文本后执行。我不确定加载是什么意思,但以下内容仍应适用:
这将以一种“简单”的方式解决您的问题,而不必使用计时器等。请参阅类似的问题:运行函数时重新显示动画gif:您的意思是“当函数下载时”中的“加载”,还是更像“当函数完成执行时”?这不是问题所在,您假设他不是通过$动态加载脚本。GetScription在这里循环不是比递归更好吗?当然,下载脚本不会花费太长时间,但如果出现网络错误,堆栈将溢出,性能将降低,或者浏览器将崩溃。这既是循环也是递归。它是一个条件循环(不是
for
或while
),它在调用自己,所以它是递归的。仅仅因为存在延迟,并不会使其递归性降低,并且所有递归都有停止条件,否则将出现无限循环。@vol7ron如果我理解正确,它不是递归的,因为setTimeout
不调用给定函数,而是将其添加到事件队列中。因此,基本上setTimeout
会立即返回,而WaitForFunction
也会立即返回。所以我们这里可能有一个无限的事件链(类似于setInterval
)。可能是语义问题,但我认为两者都可能。如果由于最初触发它的同一事件再次调用它,为什么不认为它是递归的呢?无论它是从被添加到堆栈还是其他某种机制,似乎都是一种实现方式。是的,我理解你的观点。但是整个线程都是从Jim关于堆栈使用的评论开始的,递归通常意味着堆栈使用的增加,而这里的情况并非如此。这里的另一个区别是调用函数不能使用调用函数的结果,因此一些递归模式失败。我们可以通过传递一个状态对象来解决这个问题,每次迭代都会添加到这个状态对象中。这将增加堆的使用,但不会增加堆栈的使用。
$(function(){
$("#loadingGIF").show();
WaitForFunction();
});
function WaitForFunction()
{
if (!$.isFunction(FUNCTION_TO_WAIT_ON_HERE)) {
setTimeout( WaitForFunction, 100);
return;
}
Function_Loaded();
}
function Function_Loaded(){
$("#loadingGIF").hide();
}