Sobes.tech
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.