Fungsi Generator, yield, dan Alur Kecil
Tulis fungsi generator dengan function*, gunakan yield untuk menghasilkan nilai secara malas, jalankan dengan for...of atau next(), dan rangkai alur kecil
Fungsi Generator, yield, dan Alur Kecil adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 3 pelajaran total.
Mengapa generator?
Tujuan: Menghasilkan nilai secara malas dengan generator.
- function* mendefinisikan generator
- yield menghasilkan nilai langkah demi langkah
- Gunakan for...of atau next() untuk menggunakan nilai
- Gabungkan alur kerja kecil yang menyerupai map

function* dan yield
Generator menggunakan function* dan yield. Iterasi dilanjutkan dari yield terakhir.
// A basic generator that yields 1..n lazily
function* countTo(n) {
for (let i = 1; i <= n; i = i + 1) {
yield i; // pause here and give i to the caller
}
}
for (const x of countTo(3)) {
console.log("value:", x);
}

next() secara manual
next() menelusuri nilai yield dan akhirnya mengembalikan done: true saat selesai.
// You can also drive a generator manually with next()
const it = countTo(2);
console.log(it.next()); // { value: 1, done: false }
console.log(it.next()); // { value: 2, done: false }
console.log(it.next()); // { value: undefined, done: true }

Bilangan genap secara tertunda
Generator cocok untuk aliran sederhana seperti bilangan genap tanpa perlu membuat larik besar terlebih dahulu.
// Yield even numbers up to n (inclusive)
function* evensUpTo(n) {
for (let i = 0; i <= n; i = i + 1) {
if (i % 2 === 0) {
yield i;
}
}
}
console.log("evens 0..6:", [...evensUpTo(6)]);

Alur map tertunda
Gabungkan langkah-langkah kecil: alirkan satu generator ke generator lain untuk membangun alur tertunda.
// map() as a generator: transform values lazily
function* map(iterable, fn) {
for (const v of iterable) {
yield fn(v);
}
}
const doubled = map(countTo(4), function (x) { return x * 2; });
console.log("doubled:", [...doubled]);

Kebiasaan baik
Kiat:
- Panggil fungsi generator untuk mendapatkan pengiterasi (fungsi tersebut tidak langsung berjalan sepenuhnya).
- yield menjeda; return mengakhiri urutan.
- Setelah selesai, generator sudah habis digunakan; panggil fungsinya lagi untuk mendapatkan pengiterasi baru.

Kuis nilai yang dikembalikan generator
Pemeriksaan singkat: Apa yang dikembalikan fungsi generator?

Ringkasan
Ringkasan: Definisikan function*, hasilkan nilai dengan yield secara tertunda, konsumsi dengan for...of atau next(), lalu gabungkan alur generator kecil untuk transformasi sederhana.

Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi Generator, yield, dan Alur Kecil” gratis?
Ya — teks lengkap “Fungsi Generator, yield, dan Alur Kecil” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Fungsi Generator, yield, dan Alur Kecil”?
Tulis fungsi generator dengan function*, gunakan yield untuk menghasilkan nilai secara malas, jalankan dengan for...of atau next(), dan rangkai alur kecil Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai JavaScript Academy?
Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “Fungsi Generator, yield, dan Alur Kecil” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?
Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Protokol Iterable dan for...of
- Fungsi Generator, yield, dan Alur Kecil
- Iterator Async — for await...of dan Generator Async