2010-03-16 49 views
4

我使用相對不成熟的Joose Javascript ORM插件(project page)將對象保存在Appcelerator Titanium(company page)移動項目中。由於它是客戶端存儲,因此在啓動ORM之前,應用程序必須檢查數據庫是否已初始化,因爲它檢查數據庫表以構造類。如何在沒有大量回調鏈的情況下使用異步ORM?

我的問題是,這個操作順序(如果這個是這樣的,其他事情在路上)需要大量的回調才能完成。我在代碼中跳躍了很多,這對於維護者來說並不明顯,並且導致了一些複雜的調用圖和什麼。所以,我問這些問題:

  1. 你將如何異步初始化數據庫並使用種子數據使用需要模式正確運行的ORM填充它?
  2. 您是否有任何針對異步/事件驅動編程的常規策略或鏈接,並保持調用圖的簡單易懂?
  3. 對於使用HTML 5作爲存儲引擎的Javascript ORMs /元對象系統,您是否有任何建議,並希望框架不可知?
  4. 我只是一個大新手,應該能夠輕鬆解決這個問題嗎?

謝謝大家!

回答

2

嘗試使用flow.js(https://github.com/willconant/flow-js)。

1

看看NarrativeJS

敘事JavaScript是一個小 擴展JavaScript語言 ,使對 異步事件回調攔截功能。這 使異步代碼更清晰 易讀和易於理解。

隨着敘事的JavaScript提取使用XMLHTTP一個文件接着從這樣看:

function handleResponse(responseText) { 
    document.getElementById("myElem").innerHTML = responseText; 
} 
fetch("http://www.url.com/", handleResponse); 

這樣:

document.getElementById("myElem").innerHTML = fetch->("http://www.url.com/"); 

太糟糕了,該項目不再有效: - (

dojo.Deferred()似乎也實現了一個異步monad,雖然語法不如NarrativeJS那樣清晰。

There has been some work on bringing async sugarCoffeeScript,但最終是it wasn't accepted

RxJS是另一個處理此問題的人。

相關問題