Javascript 等待函数加载

Javascript 等待函数加载,javascript,jquery,Javascript,Jquery,当javascript函数完全加载时,我如何在jQuery中进行测试? 我想使用gif,它在javascript函数加载时显示加载,并在函数完全加载时隐藏它?定义函数后,请自己调用。函数定义后的语句将仅在读取(并因此执行)前面的源文本后执行。我不确定加载是什么意思,但以下内容仍应适用: 开始加载JavaScript代码时,显示GIF 在加载的代码中,添加一条语句以隐藏结尾处的GIF 这将以一种“简单”的方式解决您的问题,而不必使用计时器等。请参阅类似的问题:运行函数时重新显示动画gif:您的意思

当javascript函数完全加载时,我如何在jQuery中进行测试?
我想使用gif,它在javascript函数加载时显示加载,并在函数完全加载时隐藏它?

定义函数后,请自己调用。函数定义后的语句将仅在读取(并因此执行)前面的源文本后执行。

我不确定加载是什么意思,但以下内容仍应适用:

  • 开始加载JavaScript代码时,显示GIF
  • 在加载的代码中,添加一条语句以隐藏结尾处的GIF

  • 这将以一种“简单”的方式解决您的问题,而不必使用计时器等。

    请参阅类似的问题:运行函数时重新显示动画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();
    }