Pergunta

Estou usando o plugin ORM do Joose JavaScript relativamente imaturo (página do projeto) para persistir objetos em um titânio do Appcelerator (página da empresa) projeto móvel. Como é o armazenamento lateral do cliente, o aplicativo deve verificar se o banco de dados é inicializado antes de iniciar o ORM, pois inspeciona as tabelas DB para construir as classes.

Meu problema é que essa sequência de operações (e se essa é assim, outras coisas no futuro) leva muitos retornos de chamada para concluir. Eu tenho muito pulando no código que não é aparente para um mantenedor e resulta em alguns gráficos de chamadas complexos e outros enfeites. Então, eu faço estas perguntas:

  1. Como você inicializaria de maneira assíncrona um banco de dados e o preencheria com dados de sementes usando um ORM que precisa do esquema para funcionar?
  2. Você tem alguma estratégia geral ou links para programação assíncrona/orientada por eventos e manter o gráfico de chamadas simples e compreensível?
  3. Você tem alguma sugestão para os sistemas JavaScript ORMS/Meta Objects que funcionam com o HTML 5 como mecanismo de armazenamento e esperamos que sejam a estrutura agnóstica?
  4. Sou apenas um grande Newb e devo conseguir resolver isso com facilidade?

Obrigado pessoal!

Foi útil?

Solução

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

Outras dicas

Dar uma olhada em Narrativa:

O JavaScript narrativo é uma pequena extensão para a linguagem JavaScript que permite recursos de bloqueio para retornos de chamada de eventos assíncronos. Isso torna o código assíncrono refrescantemente legível e compreensível.

Com o JavaScript narrativo buscando um documento usando o XMLHTTP vai de parecer assim:

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

para isso:

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

Pena que o projeto não está mais ativo :-(

dojo.deferred () Também parece implementar uma mônada assíncrona, embora a sintaxe não seja tão clara quanto as narrativas.

Houve algum trabalho para trazer açúcar assíncrono para CoffeeScript, mas finalmente não foi aceito.

RXJS é outro que lida com isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top