0

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

像这样的东西:

ridiculousTimeConsumingFunction().onReady( newFunction() );

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

4

4 回答 4

5

荒谬的时间消耗函数();新功能();

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);
});
于 2010-05-01T12:35:55.410 回答
1

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

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

asyncFunc(function() {alert('Done!');}
于 2010-05-01T12:36:56.380 回答
0

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

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

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

或者

window.onload = somefunction;
于 2010-05-01T12:34:02.257 回答
0

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

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

于 2010-05-01T12:37:35.473 回答