2012-04-05 66 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

我如果理解正確,你有一個過程將一個回調傳遞給一個你想在循環中重複的函數,這個循環會產生多個未完成的回調。

解決方案是保持回調的計數,並在每次調用時減少回調。一旦計數器達到零,做最後的處理。

小心地啓動一個計數器,並在所有回調都被關閉後遞減計數器,以確保計數器不會過早地達到零。