0

我有这个小提琴http://jsfiddle.net/jdsans/38GFS/我试图锻炼但我无法将回调函数的返回发送到主函数。回调函数包含我想要的结束返回值,但它没有返回。

当我使用 document.write() 函数打印返回值时,我得到了我想要的打印值,但正如我之前所说,它不会被返回。

请任何人都可以使用这个小提琴向我展示一个工作示例。我在小提琴中添加了更多细节作为评论,以便您理解我没有任何问题。

4

1 回答 1

5

看起来您正在尝试让异步回调返回一个值(对“同步”函数调用)。这就像试图在陆地上驾驶一艘船。范式不合适。

“返回值”的概念只存在于同步模型中。一个函数调用另一个函数,并且可以操作和返回值。但是您想要返回的值存在于函数回调中。这意味着您的整个执行线程将在回调函数之前执行,包括您保存返回值的部分。

你需要异步思考。不要返回值,使用它们来调用执行必要工作的其他函数。

我会尝试说明。假设我有代码:

  1. 做一点事
  2. 使用返回值的回调调用异步函数
  3. 使用返回值在屏幕上打印

异步的思想是在调用回调之前执行1-3。这就是为什么它被称为回调!所以 3 将在我们获得值之前执行。那没有意义。相反,您需要更改代码以执行:

  1. 做一点事
  2. 调用带有回调的异步函数,该回调使用一个值并从上面执行 3。
于 2011-07-30T14:23:54.813 回答