← Kembali ke kursus
Pelajaran kursus · Dart
Pelajaran 30

Future dan async/await

Future, async/await, then/catchError, Future.wait.

Pahami konsepnya

Future<T> adalah janji nilai di masa depan: Future<int> menghasilkan int nanti. async menandai fungsi asinkron; await menjeda sampai Future selesai. Future.delayed(Duration(seconds:1), () => "hasil") mensimulasikan tugas lambat.

Future.wait([f1, f2]) menunggu semua paralel. .then(hasil) .catchError(e) adalah alternatif chaining tanpa await.

Coba contoh kode

Future<String> ambilData() async {
  await Future.delayed(Duration(milliseconds: 100));
  return "data tiba";
}

Future<void> main() async {
  print("mulai");
  var hasil = await ambilData();
  print(hasil);

  var paralel = await Future.wait([
    Future.value(10),
    Future.value(20),
  ]);
  print(paralel.reduce((a, b) => a + b));  // 30
}

await menjeda sampai Future selesai. Future.wait menjalankan dua Future paralel lalu menunggu hasilnya sekaligus.

Latihan singkat

Uji: async dengan Future.value(42) — await hasilnya harus `42`.