在javascript中,在第一个函数准备好时执行函数

时间:2010-05-01 12:31:42

标签: javascript chaining onready

当第一个函数“准备好”时,有没有办法在javascript中调用其他函数

类似的东西:

ridiculousTimeConsumingFunction().onReady( newFunction() );

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

4 个答案:

答案 0 :(得分:4)

<击>     ridiculousTimeConsumingFunction();     newFunction();

<击>

newFunction()完成后会执行ridiculousTimeConsumingFunction()

您也可以执行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);
});

答案 1 :(得分:1)

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

function asyncFunc(callback) {
  setTimeout(function() {
    doSomething();
    callback();
  }, 1000);
}

asyncFunc(function() {alert('Done!');}

答案 2 :(得分:0)

如果你的意思是准备好,当DOM准备就绪时,就没有这样的事件,但你可以使用 jQuery's ready处理程序来解雇DOM准备就绪时的功能。

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

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

或者

window.onload = somefunction;

答案 3 :(得分:0)

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

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