BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

Node.js 7.6 com suporte à Async/Await

| por Sergio De Simone Seguir 5 Seguidores , traduzido por Wellington Soares Seguir 0 Seguidores em 14 mar 2017. Tempo estimado de leitura: 1 minuto |

O Node.js versão 7.6 foi lançado trazendo suporte à funcionalidade async/await habilitada por padrão, assim como melhorias de desempenho em dispositivos low-memory.

O suporte à async/await no Node 7.6 veio com a atualização do V8, a engine JavaScript do Chromium, para a versão 5.5. Isto significa que a funcionalidade async/await não é mais considerada experimental e pode ser utilizada sem rodar o Node com a flag --harmony, a qual deve ser utilizada para ativar as funcionalidades que a equipe do V8 ainda não considera estável.

O maior benefício da funcionalidade async/await é evitar o callback hell, que acontece após uma sequência de funções assíncronas aninhadas através dos seus respectivos calbacks.

Um exemplo de como pode gerenciar a execução de duas operações assíncronas utilizando callbacks:

function asyncOperation(callback) {
  asyncStep1(function(response1) {
    asyncStep2(response1, function(response2) {
        callback(...);
    });
  });
}

O uso da funcão async/await permite a escrita do código como se fosse uma sequência de operações síncronas:

async function asyncOperation(callback) {
    const response = await asyncStep1();
    return await asyncStep2(response);
}

Outra abordagem para resolver o callback hell é utilizando Promises, uma funcionalidade que está disponível há algum tempo no JavaScript. Com Promises, o exemplo acima fica da seguinte forma:

function asyncOperation() {
  return asyncStep1(...)
    .then(asyncStep2(...));
}

E mesmo utilizando Promises, o código pode se tornar complexo em algumas situações.

O V8 5.5 também adicionou algumas melhorias no tamanho da heap, o que reduz o uso de memória em 35% em dispositivos low-memory comparado com o V8 versão 5.3.

Outras mudanças significativas no Node 7.6 são:

  • O antigo CLI debugger do Node foi reescrito para utilizar o novo protocolo de debugger, "node --inspect", o qual vai ser o único suportado nas versões futuras do V8;
  • Suporte ao protocolo "file:" foi adicionado ao fs, possibilitando escrever
    fs.readFile( URL('file:///C:/path/to/file'), (err, data) => { }).

Além da atualização da versão 5.5 do V8, o Node 7.6 também atualizou outras dependências, como a biblioteca cross-platform assíncrona de I/O libuv 1.11 e a zlib 1.2.11.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT