Junior — Middle
Czy mógłbyś opowiedzieć o sytuacji, w której używałeś generatora w swojej pracy?
sobes.tech AI
Odpowiedź od AI
W Node.js używałem generatorów do zarządzania kodem asynchronicznym przed pojawieniem się async/await. Generatory pozwalają na wstrzymanie wykonania funkcji i wznowienie jej później, co jest wygodne przy wykonywaniu operacji asynchronicznych w kolejności.
Na przykład, za pomocą generatora można napisać kod, który odczytuje plik, następnie przetwarza dane, unikając "piekła callbacków":
const fs = require('fs');
function* readFileGenerator() {
const data = yield fs.promises.readFile('file.txt', 'utf8');
console.log('Zawartość pliku:', data);
}
const gen = readFileGenerator();
const promise = gen.next().value;
promise.then(data => gen.next(data));
Chociaż teraz częściej używa się async/await, zrozumienie generatorów pomaga lepiej pojąć mechanizmy asynchroniczności.