A evolução do Assincrono

Carlos Rodrigues

carlosrodriguesjunior@gmail.com

Quem sou eu

  • Arquiteto de Soluções 
  • + 10 anos de experiência em TI
  • Palestrante
  • Um dos Lideres do NetCoders
  • Certificado Pela Microsoft 70-480

carlos.junior@fcamara.com.br

https://www.fcamara.com.br/vagas-ti

Tem Vagas

Agenda

  1. Callback
  2. Promisse
  3. Generators
  4. Async Await

Callbacks

Callbacks

ExpressJs

  1. http://expressjs.com/
  2. GetStated - > Hello World
  3. npm init
  4. callback.js
  5. Postman

Callbacks

ExpressJs With mongoDb

  1. http://expressjs.com/en/guide/database-integration.html#mongo
  2. npm install mongodb --save
  3. Criar banco de dados no MongoDB adicionar dados
  4. Adicionar codigo Banco NetCoders e Collection Alunos
  5.  

Promises

  1. https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Promise

Promises


function connectMongoDB() {
    return new Promise(function (resolve, reject) {
        MongoClient.connect('mongodb://localhost:27017/netcoders', function (err, db) {
            if (err) reject(err)
            resolve(db)

        })
    })
}

Promises

function getCollectionList(db) {
    return new Promise(function (resolve, reject) {
        db.collection('alunos').find().toArray(function (err, result) {
            if (err) reject(err)
            resolve(result)
        })
    })
}

Promises

app.get('/', function (req, res) {

    connectMongoDB().then(function(db){
        return getCollectionList(db)
    })
    .then(function(result){
        res.send(result)
    })
    .catch(function(err){
        res.status(500).send(err)
    });

})

Generators

  • https://github.com/tj/co
function* (){
    
    yield promise;
}

Generators

  • npm install co --save
app.get('/', (req, res) => {
    co(function* () {
        try {

            let db = yield connectMongoDB();
            let result = yield getCollectionList(db);
            res.send(result)

        } catch (error) {
            console.log(error)
            res.status(500).send(error)
        }
    })


})

Async Await

  • http://koajs.com/
  • npm i koa --save

Async Await

const Koa = require('koa');
const app = new Koa();
const MongoClient = require('mongodb');
const co = require('co');


app.use(async function (ctx) {

    try {
        let db = await connectMongoDB();
        let result = await getCollectionList(db);
        ctx.body = result;
    } catch (error) {
        ctx.body = error;
    }

});

Referências

  • https://medium.com/@felipemonobe/evolucao-assincrono-nodejs-p0-d58549e97854
  • http://expressjs.com/
  • https://github.com/tj/co
  • http://koajs.com/

A evolução do Assincrono - Nodejs

By Carlos de Souza Rodrigues Junior

A evolução do Assincrono - Nodejs

  • 231