4

我正在使用相对不成熟的 Joose Javascript ORM 插件(项目页面)在 Appcelerator Titanium(公司页面)移动项目中保留对象。由于它是客户端存储,因此应用程序必须在启动 ORM 之前检查数据库是否已初始化,因为它会检查 DB 表以构造类。

我的问题是这一系列操作(如果这个操作是这样的,其他的事情在路上)需要很多回调才能完成。我在代码中有很多对维护者不明显的跳转,并导致一些复杂的调用图等等。所以,我问这些问题:

  1. 您将如何异步初始化数据库并使用需要架构正确才能运行的 ORM 使用种子数据填充它?
  2. 对于异步/事件驱动编程并保持调用图简单易懂,您有任何通用策略或链接吗?
  3. 您对使用 HTML 5 作为存储引擎并希望与框架无关的 Javascript ORM/元对象系统有什么建议吗?
  4. 我只是一个大新手,应该能够轻松解决这个问题吗?

谢谢各位!

4

2 回答 2

2

试试 flow.js (https://github.com/willconant/flow-js)。

于 2010-11-28T02:40:12.070 回答
1

Take a look at NarrativeJS:

Narrative JavaScript is a small extension to the JavaScript language that enables blocking capabilities for asynchronous event callbacks. This makes asynchronous code refreshingly readable and comprehensible.

With Narrative JavaScript fetching a document using XmlHttp goes from looking like this:

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

to this:

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

Too bad the project is no longer active :-(

dojo.Deferred() also seems to implement an async monad, though the syntax is not as clear as NarrativeJS.

There has been some work on bringing async sugar to CoffeeScript, but ultimately it wasn't accepted.

RxJS is another one that deals with this.

于 2010-03-16T22:56:15.027 回答