我目前正在 jQuery 中尝试异步函数调用并且卡住了。考虑以下示例:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>
<body>
<script type="text/javascript">
f = function() {
alert("f1");
var x = 0;
for (var i = 0; i < 2500000000; i++) {
x++;
}
alert("f2");
}
$.when( f() ).done(alert("done"));
alert("moving on...");
</script>
</body>
</html>
我希望警报消息按以下顺序显示:“f1”、“继续...”、“f2”、“完成” 但是当我在 Chrome 中运行代码时,我得到的是:“f1”, 10 秒内什么也没发生,“f2”、“完成”、“继续……”。这对我来说看起来并不异步。我做错了什么还是这是预期的行为?如果是这样,使用 when 函数和回调的全部意义是什么?我不能只同步调用函数 f 吗?