2010-03-16 52 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是另一个处理此问题的人。

相关问题