Question

J'utilise le plugin Javascript Joose ORM relativement immature (projet ) persister des objets dans une page Appcelerator Titanium ( ) projet mobile. Depuis son stockage côté client, l'application doit vérifier si la base de données est initialisé avant le démarrage de l'ORM, car il inspecte les tables DB pour construire les classes.

Mon problème est que cette séquence d'opérations (et si celui-ci est comme ça, d'autres choses sur la route) prend beaucoup de callbacks pour terminer. J'ai beaucoup de sauter dans le code qui n'est pas évident pour un mainteneur et les résultats dans certains graphiques d'appels complexes et ainsi de suite. Alors, je pose ces questions:

  1. Comment vous initialiser une base de données de manière asynchrone et le remplir avec des données de semences en utilisant un ORM qui a besoin du schéma correct de fonctionner?
  2. Avez-vous des stratégies générales ou des liens pour la programmation axée sur async / événement et garder le graphe d'appel simple et compréhensible?
  3. Avez-vous des suggestions pour les systèmes Javascript objet ORM / méta qui fonctionnent avec HTML 5 en tant que moteur de stockage et sont, espérons-cadre agnostique?
  4. Suis-je juste un grand newb et devrait être en mesure de travailler avec cette facilité?

Merci les gens!

Était-ce utile?

La solution

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

Autres conseils

Jetez un oeil à NarrativeJS :

  

JavaScript Narrative est un petit   extension du langage JavaScript   qui permet des capacités de blocage pour   callbacks d'événements asynchrones. Cette   rend le code asynchrone rafraîchissant   lisible et compréhensible.

     

Avec JavaScript Narrative aller chercher un document à l'aide XmlHttp va de ressembler à ceci:

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

à ceci:

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

Dommage que le projet ne soit plus actif: - (

dojo.Deferred () semble également mettre en œuvre une monade async, bien que la syntaxe est pas aussi claire que NarrativeJS.

Il y a eu des travaux sur la mise sucre async CoffeeScript , mais en fin de compte il n'a pas été acceptée .

RxJS est un autre qui traite de ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top