【发布时间】:2012-07-21 03:43:05
【问题描述】:
可以说我有这个异步功能:
function fooAsync(){
callSomeApi(some_args, callbackFunction(results){
return results; //i want to return the results here after the api call.
}
}
我正在寻找一种将 prev 函数的返回值分配给 var 的方法,并且只有在我拥有该值时才继续执行代码。
//some code here
var foo = fooAsync();
//some code here after getting back from the async function.
问题在于 foo 将是未定义的,因为 javascript 将在内部异步 api 调用完成之前返回。我知道我可以为此使用回调,但我正在寻找一种方法来“锁定”异步函数并仅在它得到结果时恢复。这样我就不必在异步调用之后将所有代码作为回调传递。
简而言之 - 我如何以常规同步方式从异步 ajax 调用(在我的情况下我调用 google maps api)返回值?
【问题讨论】:
-
不确定 JS,但在像 C 这样的语言中,您可以阻塞条件变量,直到异步函数完成...
-
我对在 js 上实现这一点很感兴趣..
-
你是如何调用 api 的,显示一些代码?简单的解决方案是从一开始就同步调用。
-
@adeneo - 我想将此作为一般性问题,因此特定的 api 与问题无关
-
你不能在 javascript 中做那种阻塞。您可以将请求转换为同步请求,但这是一个非常糟糕的主意,因为当响应没有及时发生时,它会导致糟糕的用户体验。处理它的更好方法是重新组织代码以异步方式工作。
标签: javascript jquery ajax