2011-03-16 42 views
0

我有类似...当函数没有返回时阻止Javascript继续?

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

其中getinfofromserver()做一个AJAX调用。我注意到即使var info尚未从getinfofromserver()分配一个值,我的代码仍将继续运行。我想知道是否有反正我可以让我的代码'保持'直到这个函数返回?我知道有些方法可以在getinfofromserver()之内进行回叫等,但我更愿意这样做,这样我就可以让我的代码保持干爽。

+0

你能不能也发布从内getinfofromserver的代码? – 2011-03-16 16:50:34

+0

让您的代码保持干爽是什么意思?因为WET代码听起来很可怕。 – Loktar 2011-03-16 16:52:08

+3

为此目的使用异步回调在JavaScript中非常习惯。 – 2011-03-16 16:52:23

回答

0

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

一些框架,或者如果你的代码到浏览器的水平,为您提供执行请求,而不是同步的选项,但需要一点点的搜索来寻找您的框架或浏览器右边的参数。

0
  1. AJAX中的'A'代表'异步'。您应该几乎总是使用回调代替同步呼叫。
  2. 没有有关以这种方式使用回调违反了DRY principle
0

它可以进行同步AJAX回调(这是相当不错的矛盾,但谁在乎)。

例如,jQuery.ajax提供async选项(docs),其他JavaScript框架的行为相似。不过,我强烈建议你考虑使用real AJAX - 这就是它的设计。

使用同步回调可能是你比回调纯AJAX请求更多的工作。你不应该需要重复任何代码在任何情况下,我不明白为什么使用AJAX违反DRY ...

0

其他已经解决的AJAX调用异步特性。但关于您的更一般的问题:

我想知道是否有反正我可以让我的代码'持有',直到这个函数返回?

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

相关问题