Menu
CoddyTech

Callbacks

Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 18 de 33.

Leer un archivo grande lleva tiempo, y un programa que se queda esperando no hace nada más mientras tanto.

fs.readFile(path, 'utf8', callback) inicia la lectura y regresa de inmediato. Cuando se carga el archivo, Node llama a tu función de callback con (err, text). err es null si todo sale bien y contiene un error en caso contrario, así que compruébalo primero. Todo lo que necesite el texto va dentro de la función de callback.

import fs from 'node:fs';

fs.readFile('poem.txt', 'utf8', (err, text) => {
    if (err) {
        console.log('No poem today');
        return;
    }
    console.log(text.split('\n').length + ' lines');
});
console.log('Asked for the poem');

Asked for the poem se imprime primero: la línea que está después de readFile se ejecuta mientras el archivo todavía se está cargando.

challenge icon

Desafío

Fácil

Esta lección abre un nuevo ejemplo de recuento con callback en count.js, en lugar de los archivos de tu herramienta de notas de la lección sobre cómo gestionar errores. Se incluyen los archivos notes.json, notes.js y store.js; tu trabajo anterior sigue guardado en su propia lección.

Leer un archivo grande lleva tiempo. Con un callback, Node puede hacer otras tareas mientras tanto y llamar a tu código cuando el archivo esté listo. Practica esto en un pequeño programa independiente, count.js, que cuenta las notas de un archivo.

  1. count.js ya muestra Reading... y sabe qué archivo leer: file es la palabra que se escribe después de node count.js, o notes.json si no se escribe nada.
  2. Lee ese archivo con fs.readFile y un callback. Todo lo que sigue ocurre dentro del callback.
  3. Si la lectura se realizó correctamente, convierte el texto en un arreglo con JSON.parse. Muestra cuántas notas contiene el arreglo, seguido de notes. Cuenta las notas del arreglo, no las líneas del archivo. notes.json empieza con dos notas, así que muestra 2 notes.
  4. Si la lectura falla, es decir, si el error del callback no es null, muestra Cannot read seguido del nombre del archivo en lugar del recuento.
  5. En ambos casos, muestra Done al final, también desde dentro del callback.

node count.js muestra:

Reading...
2 notes
Done

node count.js nothere.json muestra:

Reading...
Cannot read nothere.json
Done

Pruébalo: esta lección ejecuta count.js, así que la terminal muestra $ node count.js. Pulsa Run con el cuadro vacío y el programa leerá notes.json. Luego escribe nothere.json en el cuadro y pulsa Enter para leer un archivo que no existe.

Pruébalo tú mismo

import fs from 'node:fs';

const file = process.argv[2] ?? 'notes.json';

console.log('Reading...');
// Lee el archivo con fs.readFile y una función de devolución de llamada.
// Imprime el número de notas y luego Done.
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Conceptos básicos de Node.js

Practica por tu cuenta: Playground de Express