0Pricing
JavaScript Academy · Pelajaran

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
Fungsi Generator, yield, dan Alur Kecil — ilustrasi 1

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);
}
Fungsi Generator, yield, dan Alur Kecil — ilustrasi 2

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 }
Fungsi Generator, yield, dan Alur Kecil — ilustrasi 3

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)]);
Fungsi Generator, yield, dan Alur Kecil — ilustrasi 4

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]);
Fungsi Generator, yield, dan Alur Kecil — ilustrasi 5

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.
Fungsi Generator, yield, dan Alur Kecil — ilustrasi 6

Kuis nilai yang dikembalikan generator

Pemeriksaan singkat: Apa yang dikembalikan fungsi generator?

Fungsi Generator, yield, dan Alur Kecil — ilustrasi 7

Ringkasan

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

Fungsi Generator, yield, dan Alur Kecil — ilustrasi 8

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

  1. Protokol Iterable dan for...of
  2. Fungsi Generator, yield, dan Alur Kecil
  3. Iterator Async — for await...of dan Generator Async
← Kembali ke JavaScript Academy