【问题标题】:In javascript, execute a function when the first function is ready在javascript中,当第一个函数准备好时执行一个函数
【发布时间】:2024-06-04 15:55:02
【问题描述】:

当第一个函数“准备好”时,有什么方法可以在 javascript 中调用另一个函数

类似这样的:

ridiculousTimeConsumingFunction().onReady( newFunction() );

为了说明我的例子,你可以看看她: http://web.cinaird.se/pdf/test.htm

【问题讨论】:

标签: javascript chaining onready


【解决方案1】:

荒谬的时间消耗函数(); newFunction();

将在ridiculousTimeConsumingFunction() 完成后执行newFunction()

您也可以执行ridiculousTimeConsumingFunction(newFunction); 之类的操作,并将荒谬的TimeConsumingFunction 定义如下:

function ridiculousTimeConsumingFunction(callback) {
   for (var i=0;i<1000000000;i++) {

   };

   callback();
}

这将具有相同的效果。

事实上,放弃所有这些,因为它是一个异步事件,而不是一个耗时的函数......你必须使用回调:

function longFunction (callback) {
  setTimeout(function(){
    $(".theDiv").css('height', 200 );
    callback();
  }, 1000);
}

然后调用如下:

longFunction(function () {
      $("#info").html(info);
});

【讨论】:

    【解决方案2】:

    “就绪”的概念通常不会像您的示例那样为异步函数定义。通常这种事情是通过回调来完成的:

    function asyncFunc(callback) {
      setTimeout(function() {
        doSomething();
        callback();
      }, 1000);
    }
    
    asyncFunc(function() {alert('Done!');}
    

    【讨论】:

      【解决方案3】:

      在您的示例中,“ridiculousTimeConsumingFunction”函数实际上并不需要那么长时间来执行:它只是安排 另一个 函数在未来运行 1 秒。

      如果你想做这样的事情,我建议你查看jQuery UI 的效果 API。它允许您将动画一个接一个地“链接”在一起,并且应该达到您所追求的效果。

      【讨论】:

        【解决方案4】:

        如果你的意思是 ready 当 DOM 准备好时,没有这样的事件,但是你可以使用 jQuery's ready 处理程序在 DOM 时触发你的函数准备好了。

        使用 Javascript,您也可以像这样在 load 事件中触发您的函数:

        window.onload = function(){
          // your function code here
        };
        

        或者

        window.onload = somefunction;
        

        【讨论】:

        • @M28:你说得对,按某种习惯输入,无论如何都修好了。谢谢
        最近更新 更多