Generator w JavaScript

Generator w JavaScript

Generatory w JavaScript to potężne narzędzie, które często pozostaje niedoceniane. I choć większość zadań można obecnie rozwiązać za pomocą async/await, dzisiaj pokażę Wam, jak wykorzystać generator JavaScript do stworzenia generatora unikalnych ID.

Tworzenie Generatora ID

Najpierw stwórzmy funkcję o nazwie genId. Na początek nie potrzebujemy przekazywać do niej żadnych argumentów.

function genId() {
    let id = 0;
    id++;
}

Jednakże, jeśli teraz wywołamy tę funkcję, otrzymamy undefined, ponieważ nasza funkcja nic nie zwraca. Aby przekształcić ją w generator, musimy dodać gwiazdkę (*) po słowie function w deklaracji funkcji.

function* genId() {
    let id = 0;
    id++;
}

Przypiszmy nasz generator do zmiennej:

const gen = genId();

Teraz możemy korzystać z naszego generatora. Dostępna jest metoda next, która pozwala na krokowe uzyskiwanie wartości z generatora.

console.log(gen.next()); // { value: undefined, done: true }

Metoda next zwróciła nam obiekt, który ma wartość (value), która jest undefined, i done, który jest true. Dzieje się tak, ponieważ wewnątrz kodu naszej funkcji nie ma momentu, w którym coś byśmy zwrócili. Aby zatrzymać działanie generatora i zwrócić wartość, musimy użyć słowa kluczowego yield.

function* genId() {
    let id = 0;
    yield id++;
}

Teraz wszystko się zmieniło.

console.log(gen.next()); // { value: 0, done: false }

Funkcja nie doszła do końca, ponieważ zatrzymała się na słowie yield. Możemy teraz skopiować ten fragment kilka razy:

function* genId() {
    let id = 0;
    yield id++;
    yield id++;
    yield id++;
}

console.log(gen.next()); // { value: 0, done: false }
console.log(gen.next()); // { value: 1, done: false }
console.log(gen.next()); // { value: 2, done: false }

Generator ID z Użyciem Pętli

Ale to jeszcze nie wszystko. Możemy również stworzyć generator ID za pomocą pętli while, który będzie działał w nieskończoność, dopóki go nie zatrzymamy.

function* genId() {
    let id = 0;
    while (true) {
        yield id++;
    }
}

Teraz nasz generator będzie dostarczał unikalne identyfikatory w nieskończoność, dzięki wykorzystaniu warunku true.

Generatorz w JavaScript to narzędzie, które warto poznać i wykorzystywać. Są one przydatne do obsługi operacji asynchronicznych, generowania sekwencji danych i wielu innych zastosowań. Mam nadzieję, że ten artykuł pomógł Ci zrozumieć, jak tworzyć i używać generatorów ID w JavaScript.