当函数没有返回时阻止Javascript继续?

时间:2011-03-16 16:48:53

标签: javascript ajax

我有类似......

//start function
var info = getinfofromserver();
//Continue with function

其中getinfofromserver()执行AJAX调用。我注意到即使var info尚未为getinfofromserver()分配值,我的代码也会继续运行。我想知道无论如何我都可以将我的代码设置为“保持'直到此功能返回?我知道有一些方法可以在getinfofromserver()内进行回拨等,但我现在更愿意这样做,所以我可以保持我的代码干。

4 个答案:

答案 0 :(得分:0)

默认情况下,在许多框架中,根据定义,AJAX请求是异步执行的。这意味着您的函数将在发送请求后继续,结果将由您注册的回调函数处理。

某些框架,或者如果您编写代码到浏览器级别,为您提供了同步执行请求的选项,但需要进行一些搜索才能找到适合您的框架或浏览器的参数。

答案 1 :(得分:0)

  1. AJAX中的'A'代表'异步'。您应该几乎总是使用回调而不是同步调用。
  2. 以这种方式使用回调没有任何违反DRY principle
  3. 的行为

答案 2 :(得分:0)

可以执行同步AJAX回调(这是一个非常好的矛盾,但谁在乎)。

例如,jQuery.ajax提供async选项(docs),其他JavaScript框架的行为类似。但是,我强烈建议您考虑使用真正的 AJAX - 这就是它的设计方式。

使用同步回调可能比带有回调的普通AJAX请求更有用。在任何一种情况下你都不需要重复任何代码,所以我不明白为什么使用AJAX会违反DRY ......

答案 3 :(得分:0)

其他人已经解决了AJAX调用的异步性质。但关于你更普遍的问题:

  

我想知道无论如何我可以让我的代码“保持”,直到此函数返回?

这实际上是发生了什么;在该函数返回之前,它不会继续使用其余代码。只是函数可能在AJAX调用获得响应之前返回。但这是另一回事; AJAX调用不是函数。