我有这个小提琴http://jsfiddle.net/jdsans/38GFS/,我试图锻炼,但我无法将回调函数的返回发送到main函数。回调函数包含我想要的结束返回值,但它没有返回。
当我使用document.write()函数打印返回值时,我得到了我想要的确切值,但正如我之前所说,它不会被返回。
任何人都可以用这个小提琴来向我展示一个有效的例子。我在小提琴中添加了更多细节作为评论,以便您在理解我时没有任何问题。
答案 0 :(得分:5)
看起来你正试图让异步回调返回一个值(到“同步”函数调用)。这就像试图在干地上船长船。范式不合适。
“返回值”的概念仅存在于同步模型中。在一个函数调用另一个函数的情况下,可以操纵和返回值。但是您想要返回的值存在于函数回调中。这意味着整个执行线程将在回调函数之前执行,包括保存返回值的部分。
你需要异步思考。不要返回值,使用它们来调用执行必要工作的其他函数。
我会试着说明一下。假设我有代码:
异步的想法是1-3在调用回调之前执行。这就是为什么它被称为回调 !!因此3将在我们获得值之前执行。这没有意义。相反,您需要更改代码才能执行: