Junior — Middle
Можете ли да разкажете за случай, когато сте използвали генератор в работата си?
sobes.tech AI
Отговор от AI
В Node.js използвах генератори за управление на асинхронен код преди появата на async/await. Генераторите позволяват да спрем изпълнението на функция и да го възобновим по-късно, което е удобно за последователно изпълнение на асинхронни операции.
Например, с помощта на генератор може да напишете код, който чете файл, след това обработва данните, без да попадате в "адът на callback-ите":
const fs = require('fs');
function* readFileGenerator() {
const data = yield fs.promises.readFile('file.txt', 'utf8');
console.log('Съдържанието на файла:', data);
}
const gen = readFileGenerator();
const promise = gen.next().value;
promise.then(data => gen.next(data));
Въпреки че сега по-често се използва async/await, разбирането на генераторите помага по-добре да се разберат механизмите на асинхронността.