Этот вопрос проверяет понимание callback hell и умение управлять асинхронным кодом в Node.js.
Глубоко вложенные коллбэки (callback hell) возникают, когда одна асинхронная функция вызывается внутри другой, создавая сложную и нечитаемую структуру кода. Это можно предотвратить с помощью Promise, async/await или управляющих библиотек.
Глубоко вложенные коллбэки, или callback hell, выглядят как "лесенка" из вложенных функций. Такой код сложно читать и поддерживать:
Пример callback hell:
fs.readFile('file1.txt', 'utf8', (err, data1) => {
fs.readFile('file2.txt', 'utf8', (err, data2) => {
fs.readFile('file3.txt', 'utf8', (err, data3) => {
console.log('Все файлы прочитаны');
});
});
});Как предотвратить:
Использование Promises:
const fs = require('fs').promises;
Promise.all([
fs.readFile('file1.txt', 'utf8'),
fs.readFile('file2.txt', 'utf8'),
fs.readFile('file3.txt', 'utf8')
]).then((data) => console.log('Файлы прочитаны', data));Использование async/await:
const readFiles = async () => {
const data1 = await fs.readFile('file1.txt', 'utf8');
const data2 = await fs.readFile('file2.txt', 'utf8');
const data3 = await fs.readFile('file3.txt', 'utf8');
console.log('Все файлы прочитаны');
};
readFiles();