Menu
CoddyTech

Колбэки

Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 14 из 24.

Чтение большого файла занимает время, а программа, которая ждёт его, тем временем ничего больше не делает.

fs.readFile(path, 'utf8', callback) начинает чтение и сразу возвращает управление. Когда файл загружен, Node вызывает вашу функцию обратного вызова с аргументом (err, text). При успехе err равен null, а в противном случае содержит ошибку, поэтому сначала проверьте его. Всё, для чего нужен текст, поместите внутрь функции обратного вызова.

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 выводится первым: строка после readFile выполняется, пока файл ещё загружается.

challenge icon

Задание

Легко
  • count.js печатает Reading..., затем <n> notes из обратного вызова, а затем Done, также из обратного вызова.
  • Если файл не удаётся прочитать, вместо количества печатается Cannot read <file>.

Выполни node count.js, затем node count.js nothere.json.

Попробуйте сами

import fs from 'node:fs';

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

console.log('Reading...');
// Прочитайте файл с помощью fs.readFile и функции обратного вызова.
// Выведите количество заметок, затем Done.
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы Node.js