如何在调用异步函数后的javascript/jquery代码中创建暂停

如何在调用异步函数后的javascript/jquery代码中创建暂停,javascript,jquery,asynchronous,Javascript,Jquery,Asynchronous,如何调用异步函数,然后在调用该函数后的代码中创建暂停,以便(几乎)确定异步函数已完成? 我不想把调用之后的代码放在函数中,然后延迟它来实现这一点,只需将代码按原样暂停几秒钟 我的意思是: <script> asynchronousFunction(); // start running immediatly waitFor10Seconds(); // only the following code should wait while the async

如何调用异步函数,然后在调用该函数后的代码中创建暂停,以便(几乎)确定异步函数已完成?
我不想把调用之后的代码放在函数中,然后延迟它来实现这一点,只需将代码按原样暂停几秒钟

我的意思是:

<script>
   asynchronousFunction(); // start running immediatly

   waitFor10Seconds(); // only the following code should wait while the async 
                       // function is running in the background

   rest of the code; // this code will start running after 10 seconds have passed 
                     // since the async function has been called     
</script>

asynchronousFunction();//立即开始跑步
等待10秒();//在异步
//函数正在后台运行
代码的其余部分;//此代码将在10秒后开始运行
//因为已经调用了异步函数

Aldo回调是更好的做法,这是您要求的

window.setTimeout(function(){ ... }, 10000);

它被称为
setTimeout

asyncThing();
setTimeout(function() {
    // do stuff
}, 10000);
理想情况下,异步操作应该允许您传递回调,以便将其转换为

asyncThing(function() {
    // do stuff
}); 

如前所述,您应该真正使用回调。使用jQuery很容易:

$.get("page.php", "key1=value1", function(data) {
    // Code in here will be executed when response has been received
});


如果您想发布数据,当然可以使用$.post()。

我已经尝试过了,在这里我问了很多复杂的问题,但是没有人能够找到它们的来源。你能告诉我不回电话怎么办吗?不,你要回电话。做对了,找出错误,而不是做错了。你的方法“有时”会起作用,而且绝对是错误的。@meagar,当然正确的做法是正确的,但我已经尝试了将近三个星期,没有人能帮我解决这个问题(很多人已经尝试过了),我没有选择。@jerone,在回调中应该调用哪个代码?异步函数或以下代码。我想延迟以下代码,而不是异步函数。@jerone,好的。现在,如果所有代码(包括对异步函数的调用)都在submit()函数中,该怎么办?如果我把下面的代码放在setTimeOut函数中,我相信表单会在下面的代码运行之前提交。我希望在提交表单之前运行代码。请不要提供
event.preventDefault()
然后调用
submit()
。我已经试过了,但在我的情况下,有一个问题没有人能找到。取消表单提交确实适用于
preventDefault
,或者您可以尝试
returnfalse。您确定提交(例如
文档.表单[0].submit()
)有效吗?这是一个不同的问题,没有代码很难解决…@jerone,我的情况真的很奇怪,但在调用
preventDefault()
returnfalse
后,我无法再次提交。我试过很多在这里得到的建议。我别无选择,只能使用原始提交。但只有在所有代码完成之后。如果不将代码放入函数中,就无法暂停代码吗?@Ash。“提交”按钮上可能有事件。我想不出一种方法,既在指定的超时后执行代码,又执行以前的事件。抱歉,问题是我所有的代码都在submit()函数中。调用后的代码是否只有在表单提交后才能执行?请不要提供
event.preventDefault()
然后调用
submit()
。我已经试过了,但在我的情况下,有一个问题没有人能找到。@一个明显的解决方案是,只需将提交按钮更改为单击按钮,并抑制enter键提交。不要提交表格。尝试
$(“form”)。serialize()
您是说我应该删除
submit()
函数并编写
click()
函数,还是说我应该更改按钮定义?如何抑制输入键提交?@Ash event.preventdeault on keyup/按e.which==13