Domanda

Sto utilizzando il plug-in relativamente immaturo Joose Javascript ORM (progetto pagina ) a persistere oggetti in un Appcelerator Titanium ( ) progetto mobile. Dal momento che di archiviazione lato client, l'applicazione deve controllare per vedere se il database viene inizializzato prima di avviare l'ORM poiché ispeziona le tabelle DB per costruire le classi.

Il mio problema è che questa sequenza di operazioni (e se questo è come questo, l'altro lungo la strada) prende un sacco di callback per completare. Ho un sacco di saltare nel codice che non è evidente a un manutentore e si traduce in alcuni grafici di chiamata complesse e quant'altro. Quindi, chiedo a queste domande:

  1. Come vi asincrono inizializzare un database e popolarlo con i dati di semi utilizzando un ORM che ha bisogno lo schema di essere corretto per funzionare?
  2. Avete strategie generali o link per asincrone / event-driven di programmazione e mantenendo il grafo delle chiamate semplice e comprensibile?
  3. Hai qualche suggerimento per sistemi a oggetti meta Javascript ORM / che funzionano con HTML 5 come un motore di storage e sono auspicabilmente quadro agnostica?
  4. Sono solo un grande newb e dovrebbe essere in grado di lavorare questo fuori con facilità?

Grazie ragazzi!

È stato utile?

Soluzione

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

Altri suggerimenti

Date un'occhiata a NarrativeJS :

  

Narrative JavaScript è un piccolo   estensione al linguaggio JavaScript   che consente funzionalità di blocco per   callback degli eventi asincroni. Questo   rende codice asincrono rinfrescante   leggibile e comprensibile.

     

Con Narrative JavaScript recupero di un documento con XmlHttp va da guardare in questo modo:

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

a questo:

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

Peccato che il progetto non è più attiva: - (

dojo.Deferred () sembra anche di implementare una monade asincrono, anche se la sintassi non è chiaro come NarrativeJS.

C'è stato un certo lavoro da portare zucchero asincrona per CoffeeScript , ma in ultima analisi, non è stato accettato .

RxJS è un altro che si occupa di questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top