¿Qué es el filesystem (sistema de archivos)?
-
Creamos nuestro
app.js
. -
Inicializamos el modulo
fs (filesystem)
.// Llamar modulo fs var fs = require("fs"); // Llamar de manera síncrona. 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. -
Vamos a cambiar un poco el código, para hacerlo asíncrono.
// Llamar modulo fs var fs = require("fs"); // Llamar de manera síncrona. 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 mensajeFin!
se ejecutará antes queconsole.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.