如何在没有巨大回调链的情况下使用异步 ORM?
-
20-09-2019 - |
题
我正在使用相对不成熟的 Joose Javascript ORM 插件(项目页面)将对象持久保存在 Appcelerator Titanium 中(公司页面)移动项目。由于它是客户端存储,应用程序必须在启动 ORM 之前检查数据库是否已初始化,因为它会检查数据库表来构造类。
我的问题是,这一系列操作(如果这个操作是这样的,那么接下来的其他事情)需要大量回调才能完成。我在代码中进行了很多跳转,这对维护人员来说并不明显,并导致一些复杂的调用图等。所以,我问这些问题:
- 您将如何异步初始化数据库并使用需要架构正确运行的 ORM 来填充种子数据?
- 您是否有任何用于异步/事件驱动编程并保持调用图简单易懂的通用策略或链接?
- 对于使用 HTML 5 作为存储引擎并且希望与框架无关的 Javascript ORM/元对象系统,您有什么建议吗?
- 我只是一个大新手,应该能够轻松解决这个问题吗?
谢谢各位!
解决方案
尝试 flow.js (https://github.com/willconant/flow-js)。
其他提示
看一眼 叙事JS:
叙事 JavaScript 是一个小 扩展 的封堵功能 异步事件回调。这 使异步代码令人耳目一新 可读性和可理解性。
通过 Narrative 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/");
太糟糕了,该项目不再活跃:-(
道场.Deferred() 似乎也实现了一个异步 monad,尽管语法不如 NarrativeJS 清晰。
在引入异步糖方面已经做了一些工作 到 咖啡脚本, ,但最终 它没有被接受.
RxJS 是处理这个问题的另一种方法。
不隶属于 StackOverflow