BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Node.js 7.6 com suporte à Async/Await

Node.js 7.6 com suporte à Async/Await

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

Conteúdo educacional

BT