2012-04-05 70 views
0

当我尝试从本地sqlite或ajax请求获取某些内容时,我无法返回某些值,因此需要运行回调。JavaScript;异步操作,回调和太多的递归

我有一些非常大的功能,获取和处理一些数据,但我需要把它放在循环中,并保持它,直到它完成。我不能这样做,因为功能在内部回调运行之前完成。我可以再做一个回调函数,但它不会占用内存吗?或者它不会因为父函数完成而内部变量和对象被销毁?

对不起,我的英语。

+1

发表简单的例子 – asawyer 2012-04-05 21:55:12

+0

如果没有看到您的代码或至少是您的代码的操作框架,我们无法真正帮助您。 – jfriend00 2012-04-05 21:56:44

+1

听起来像你需要重新考虑你的代码的架构在异步事件和你如何管理回调。如果您使用jQuery,请查看延迟对象API。它是为这种事情而设计的。 – 2012-04-05 21:59:48

回答

0

我如果理解正确,你有一个过程将一个回调传递给一个你想在循环中重复的函数,这个循环会产生多个未完成的回调。

解决方案是保持回调的计数,并在每次调用时减少回调。一旦计数器达到零,做最后的处理。

小心地启动一个计数器,并在所有回调都被关闭后递减计数器,以确保计数器不会过早地达到零。