English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS Tutorial Básico

NodeJS Express.js

NodeJS Buffer & URL;

NodeJS MySql

NodeJS MongoDB

NodeJS Arquivo (FS)

Outros NodeJS

Funções de Callback no Node.js

Função de callback do Node.js: A assincronia é um dos principais fatores que tornaram o Node.js popular. A callback é a implementação de função assíncrona. Geralmente, na Node.js, a maioria das funções de tratamento de recursos têm variantes de callback.

Quando um recurso é chamado por uma função assíncrona para uma tarefa, o controle é imediatamente passado para a próxima instrução após a função. As tarefas no recurso são iniciadas paralelamente. Isso pode ajudar O Node.js continua executando outras tarefas, enquanto essa função está usando o recurso. Assim que a tarefa que usa o recurso for concluída, o Node.js usará a função de callback para restaurar. Chama A função de callback é passada com os seguintes parâmetros: objeto de dados, objeto de resultado e (ou) objeto de erro que contém informações relacionadas à tarefa.

Função bloqueante:Em contraste com as funções assíncronas, as funções síncronas executarão um bloco até que o recurso seja concluído. Portanto, as funções síncronas também são chamadas de funções bloqueantes.

Funções de callback aninhadas do Node.js : Se várias operações forem executadas no recurso em sequência e também precisarem ser executadas de forma assíncrona, as funções de callback podem ser aninhadas.

Agora, ao ler o arquivo (tarefa) (recursos), veremos três situações em comparação com as funções assíncronas.

  • Exemplo de função bloqueante do Node.js

  • Exemplo de função de callback do Node.js

  • Exemplo de Função de Callback Aninhada do Node.js

Exemplo de função bloqueante

A seguir está um exemplo de script Node.js que lê o arquivo sample.txt de forma síncrona.

 var fs = require('fs'); 
 
// Ler o arquivo sample.txt
var data = fs.readFileSync('sample.txt'); 
console.log("Leitura do arquivo concluída: ") + new Date().toISOString()); 
 
console.log("After readFileSync statement:") + new Date().toISOString());

Quando o programa acima for executado

Saída do Terminal

 arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-sync.js 
Leitura do arquivo concluída: 2017-10-19T12:21:40.103Z
After readFileSync statement: 2017-10-19T12:21:40.105Z

A declaração after readFileSync é sempre executada após a leitura do arquivo ser concluída. fs.readFileSync bloqueia o fluxo de execução.

Exemplo de função de callback do Node.js

A seguir está um exemplo de script Node.js, que usaFunção de callback do Node.jsLer o arquivo sample.txt de forma assíncrona.

 var fs = require('fs'); 
 
// Ler o arquivo sample.txt
fs.readFile('sample.txt', 
    // Função de callback chamada quando a leitura do arquivo é concluída
    function(err, data) {  
        if (err) throw err; 
        // Os dados são uma área de buffer que contém o conteúdo do arquivo
        console.log("Leitura do arquivo concluída: ") + new Date().toISOString()); 
 }); 
 
console.log("Após o readFile assíncrono: "); + new Date().toISOString());

Quando o programa acima for executado

Saída do Terminal

arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-async.js 
Após o readFile assíncrono: 2017-10-19T12:25:36.982Z
Leitura do arquivo concluída: 2017-10-19T12:25:36.987Z

Pode notar que, mesmo após a execução de console.log no comando assíncrono readFile, a leitura do arquivo demora aproximadamente5milissegundos. file. fs.readFile('sample.txt', função de callback{..}) não bloqueou a execução, mas iniciou uma nova thread de controle paralela para ler o arquivo (executar tarefas de recursos).

Exemplo de Função de Callback Aninhada do Node.js

Para demonstrar a função de callback aninhada do Node.js, consideraremos o plano de renomear o arquivo e, em seguida, usaremos uma função assíncrona para deletá-lo.

 var fs = require('fs'); 
 
fs.rename('sample.txt', 'sample_old.txt', 
    // Primeira Chamada de Retorno
    function (err) { 
        if (err) throw err; 
        console.log('Arquivo Renomeado.'); 
        fs.unlink('sample_old.txt', 
            // Segunda Chamada de Retorno
            function (err) { 
                if (err) throw err; 
                console.log('Arquivo Apagado.'); 
            } 
        );  
    } 
 );

Quando o exemplo do Node.js acima for executado junto com o node

Saída do Terminal

 arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-aninhado-callback.js 
Arquivo Renomeado. 
Arquivo Apagado.

Conclusão:

Neste tutorial do Node.js – Funções de Callback do Node.js, aprendemos o fluxo de execução das funções de callback e como elas realizam operações não-bloqueantes, bem como como combinar funções de callback aninhadas com exemplos.