Как вы используете асинхронные ORM без огромных цепочек обратных вызовов?

StackOverflow https://stackoverflow.com/questions/2458630

Вопрос

Я использую относительно незрелый плагин Joose Javascript ORM (страница проекта) для сохранения объектов в Appcelerator Titanium (страница компании) мобильный проект.Поскольку это хранилище на стороне клиента, приложение должно проверить, инициализирована ли база данных перед запуском ORM, поскольку оно проверяет таблицы базы данных для создания классов.

Моя проблема в том, что для выполнения этой последовательности операций (и если это так, то и других действий в будущем) требуется много обратных вызовов.У меня много скачков в коде, которые не очевидны для сопровождающего и приводят к некоторым сложным графам вызовов и еще много к чему.Итак, я задаю эти вопросы:

  1. Как бы вы асинхронно инициализировали базу данных и заполнили ее исходными данными, используя ORM, для функционирования которого требуется корректность схемы?
  2. Есть ли у вас какие-либо общие стратегии или ссылки для асинхронного / событийно-ориентированного программирования и поддержания простого и понятного графика вызовов?
  3. Есть ли у вас какие-либо предложения по Javascript ORM / системам метаобъектов, которые работают с HTML 5 в качестве механизма хранения и, надеюсь, не зависят от фреймворка?
  4. Я просто большой новичок и должен быть в состоянии справиться с этим с легкостью?

Спасибо, ребята!

Это было полезно?

Решение

Попробуйте flow.js (https://github.com/willconant/flow-js).

Другие советы

Взгляните на Повествовательный материал:

Narrative 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/");

Очень жаль, что проект больше не активен :-(

додзе.Отложенный () также, похоже, реализуется асинхронная монада, хотя синтаксис не такой понятный, как NarrativeJS.

Была проделана некоторая работа по внедрению асинхронного сахара Для Кофейный скрипт, но в конечном счете это не было принято.

RxJS - это еще один инструмент, который занимается этим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top