当第一个函数“准备好”时,有没有办法在javascript中调用其他函数
类似的东西:
ridiculousTimeConsumingFunction().onReady( newFunction() );
为了说明我的例子你可以看看她: http://web.cinaird.se/pdf/test.htm
答案 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。它允许您一个接一个地“链接”动画,并且应该达到您想要的效果。