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`.