我只找到了涉及类、事件处理程序和回调的相当复杂的答案(在我看来,这似乎是一种有点大锤的方法)。我认为回调可能是有用的,但我似乎不能应用这些最简单的上下文。看这个例子:
<html>
<head>
<script type="text/javascript">
function myfunction() {
longfunctionfirst();
shortfunctionsecond();
}
function longfunctionfirst() {
setTimeout('alert("first function finished");',3000);
}
function shortfunctionsecond() {
setTimeout('alert("second function finished");',200);
}
</script>
</head>
<body>
<a href="#" onclick="javascript:myfunction();return false;">Call my function</a>
</body>
</html>
在这种情况下,第二个函数比第一个函数先完成; 最简单的方法是什么(或者有没有最简单的方法?)强制第二个函数延迟执行,直到第一个函数完成?
- 编辑
因此,这是一个垃圾示例,但感谢 David Hedlund,我从这个新示例中看到它确实是同步的(同时在测试过程中导致我的浏览器崩溃!):
<html>
<head>
<script type="text/javascript">
function myfunction() {
longfunctionfirst();
shortfunctionsecond();
}
function longfunctionfirst() {
var j = 10000;
for (var i=0; i<j; i++) {
document.body.innerHTML += i;
}
alert("first function finished");
}
function shortfunctionsecond() {
var j = 10;
for (var i=0; i<j; i++) {
document.body.innerHTML += i;
}
alert("second function finished");
}
</script>
</head>
<body>
<a href="#" onclick="javascript:myfunction();return false;">Call my function</a>
</body>
</html>
由于我的实际问题是与 jQuery 和 IE 我将不得不张贴一个单独的问题,如果我不能得到任何地方自己!