【发布时间】:2011-05-19 18:12:07
【问题描述】:
我需要用 JavaScript 编写一个函数,它通过调用异步函数返回一个状态。但是,调用者只接收值,不提供回调函数。我试过类似的东西:
function getState() {
var ret = null;
asyncCall("request",
function() { ret = "foo"; } // callback
);
while (ret === null)
; // block on the asynchronous call
return ret;
}
但是,循环永远不会结束……
有什么想法吗?谢谢。
【问题讨论】:
-
为什么要首先阻止异步调用?这样做毫无意义。
-
@Tomolak:因为这是 Firefox 提供的调用,我无法更改。预计最多需要几毫秒,我不想仅仅因为这个而重构我的所有其他代码。
-
能贴出调用
getState()的函数吗? -
@Tomolak:这里发帖太长了,估计很多地方都会调用。因此,我希望这个函数能够返回一个值。
-
你有没有得到任何有效的答案?我也面临同样的问题,直到现在找不到任何正确的答案。我现在唯一的选择是在许多地方重构代码以使用异步方法。