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.