Managing the flow of asynchronous operations in NodeJS

Erick Wendel

Microsoft Student Partner

Sync x Async x Parallel 

  • Operações Síncronas
    • Operações realizadas em série.
  • Operações Assíncronas
    • Operações são realizadas de acordo com a prioridade definida pelo sistema operacional.
  • Paralelismo
    • Processamentos independentes executados ao mesmo tempo.

Demonstration

 Continuation-passing style

function myFunction(callback) {
    return callback(null, 'hello from my function');

}
  • Funções que recebem funções como argumento.
  • Após a execução de uma determinada tarefa, retorna ao ponto em que foi chamado, devolvendo o resultado da chamada.

Demonstration

Best Practices

  • Funções
    • Funções nomeadas.
    • "return" para finalizar a chamada.
  • Argumentos
    • Primeiro argumento para erros.
    • Segundo argumento para resultados.

Callback Hell

Demonstration

Promises (ES6)

… Uma Promise (promessa) é uma abstração para programação assíncrona, que recebe algum input (dados) e retorna uma promessa do output (resultado) final. “ - Sebastian Ferrari

Demonstration

BluebirdJS Module

  • Implementação para manipular Promises.
  • Transformar funções
    • Funções que possuam callbacks em promises.
    • casting de implementações existentes (modulos) em promises.

Demonstration

AsyncJS Module

  • Superset para controle de fluxo das operações.
  • Mais opções para manipular operações (async, series, parallel, map, waterfall, etc.)

Demonstration

Future !!

  • ECMAScript 7

    • Async Functions (async/await)

OBRIGADO !!!

  • http://bit.ly/control-flow-nodejs
  • http://bit.ly/mva-erickwendel
  • http://erickwendel.com.br
  • http://netcoders.com.br/blog​
  • slides.com/erickwendel/control-flow-nodejs/
  • http://caolan.github.io/async/
  • github.com/ErickWendel/nodeconf-examples/

MAIS LINKS

Managing the flow of asynchronous operations in NodeJS - nodeconf2016

By Erick Wendel

Managing the flow of asynchronous operations in NodeJS - nodeconf2016

Managing the flow of asynchronous operations in NodeJS

  • 3,056