🥇 Filesystem (sistema de archivos)

  1. Creamos nuestro app.js.
  2. Inicializamos el modulo fs (filesystem).
// Llamar modulo fs
var fs = require('fs');

// Llamar de manera sincrona.
var texto = fs.readFileSync(__dirname + '/texto.txt', 'utf8');

// Imprimir el texto
console.log(texto);

En el ejemplo, estamos viendo como sin utilizar un callback podemos ejecutar línea por línea nuestro código. Esto debido a que la función readFileSync es síncrona, espera hasta que el buffer este lleno y mientras detiene su valor. Sin embargo esto no es el comportamiento en muchas aplicaciones, pues puede ser que múltiples usuarios estén usando la misma aplicación leyendo el mismo archivo y al mismo tiempo.

  1. Vamos a cambiar un poco el código, para hacerlo asíncrono.
// Llamar modulo fs.
var fs = require('fs');

// Llamar de manera sincrona.
fs.readFile(__dirname + '/texto.txt', 'utf8', function(error, datos){

    // Imprimir el texto
    console.log(datos);

});

// Imprimir fin
console.log('Fin!');

Hay que tomar en cuenta que muchas de las funciones que actúan como callbacks son Error-First Callback, es decir, que el primer parámetro que envían es el objeto error, si este error no existe regresan null. Este es el caso de la función callback de readFile.

La función readfile es asíncrona, cuando la invocamos el callback se disparará cuando termine de leer el archivo, pero el código continua su ejecución, es decir que el mensaje Fin! se ejecutará antes que console.log(datos).

Los callbacks se disparan solo cuando se completa su ejecución, y las funciones asíncronas no bloquean la continuación de la ejecución del código.