【发布时间】:2024-06-04 15:55:02
【问题描述】:
当第一个函数“准备好”时,有什么方法可以在 javascript 中调用另一个函数
类似这样的:
ridiculousTimeConsumingFunction().onReady( newFunction() );
为了说明我的例子,你可以看看她: http://web.cinaird.se/pdf/test.htm
【问题讨论】:
标签: javascript chaining onready
当第一个函数“准备好”时,有什么方法可以在 javascript 中调用另一个函数
类似这样的:
ridiculousTimeConsumingFunction().onReady( newFunction() );
为了说明我的例子,你可以看看她: http://web.cinaird.se/pdf/test.htm
【问题讨论】:
标签: javascript chaining onready
荒谬的时间消耗函数(); 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);
});
【讨论】:
“就绪”的概念通常不会像您的示例那样为异步函数定义。通常这种事情是通过回调来完成的:
function asyncFunc(callback) {
setTimeout(function() {
doSomething();
callback();
}, 1000);
}
asyncFunc(function() {alert('Done!');}
【讨论】:
在您的示例中,“ridiculousTimeConsumingFunction”函数实际上并不需要那么长时间来执行:它只是安排 另一个 函数在未来运行 1 秒。
如果你想做这样的事情,我建议你查看jQuery UI 的效果 API。它允许您将动画一个接一个地“链接”在一起,并且应该达到您所追求的效果。
【讨论】:
如果你的意思是 ready 当 DOM 准备好时,没有这样的事件,但是你可以使用 jQuery's ready 处理程序在 DOM 时触发你的函数准备好了。
使用 Javascript,您也可以像这样在 load 事件中触发您的函数:
window.onload = function(){
// your function code here
};
或者
window.onload = somefunction;
【讨论】: