我有类似......
//start function
var info = getinfofromserver();
//Continue with function
其中getinfofromserver()
执行AJAX调用。我注意到即使var info
尚未为getinfofromserver()
分配值,我的代码也会继续运行。我想知道无论如何我都可以将我的代码设置为“保持'直到此功能返回?我知道有一些方法可以在getinfofromserver()
内进行回拨等,但我现在更愿意这样做,所以我可以保持我的代码干。
答案 0 :(得分:0)
默认情况下,在许多框架中,根据定义,AJAX请求是异步执行的。这意味着您的函数将在发送请求后继续,结果将由您注册的回调函数处理。
某些框架,或者如果您编写代码到浏览器级别,为您提供了同步执行请求的选项,但需要进行一些搜索才能找到适合您的框架或浏览器的参数。
答案 1 :(得分:0)
答案 2 :(得分:0)
可以执行同步AJAX回调(这是一个非常好的矛盾,但谁在乎)。
例如,jQuery.ajax
提供async
选项(docs),其他JavaScript框架的行为类似。但是,我强烈建议您考虑使用真正的 AJAX - 这就是它的设计方式。
使用同步回调可能比带有回调的普通AJAX请求更有用。在任何一种情况下你都不需要重复任何代码,所以我不明白为什么使用AJAX会违反DRY
......
答案 3 :(得分:0)
其他人已经解决了AJAX调用的异步性质。但关于你更普遍的问题:
我想知道无论如何我可以让我的代码“保持”,直到此函数返回?
这实际上是发生了什么;在该函数返回之前,它不会继续使用其余代码。只是函数可能在AJAX调用获得响应之前返回。但这是另一回事; AJAX调用不是函数。