Dalam dunia pemrograman modern, terutama saat bekerja dengan I/O seperti API, database, atau delay proses, kita sering mendengar istilah synchronous dan asynchronous. Kedua konsep ini sangat penting untuk dipahami karena berpengaruh langsung pada performa dan responsivitas aplikasi.
Artikel ini akan membahas perbedaan keduanya secara detail, lalu kita bedah contoh kode Dart berikut:
Apa itu Synchronous?
Synchronous (sinkron) adalah cara eksekusi program yang berjalan berurutan dari atas ke bawah. Setiap baris kode harus menunggu baris sebelumnya selesai terlebih dahulu.
Contoh sederhana :
Semua berjalan linear dan blocking. Artinya, jika ada proses lama di tengah, program akan ikut tertahan.
Apa itu Asynchronous?
Berbeda dengan synchronous, asynchronous (asinkron) memungkinkan program untuk melanjutkan eksekusi tanpa harus menunggu proses tertentu selesai.
Biasanya digunakan untuk:
- Request API
- Akses database
- File I/O
- Timer / delay
Di Dart, asynchronous ditangani dengan:
Futureasyncawaitthen()
Analisis Kode Contoh
Mari kita bahas kode utama:
Langkah Eksekusi:
print("A")dijalankan → langsung tampil AcetakB()dipanggil → tapi ini asynchronous, jadi tidak ditunggu.then(...)akan dijalankan nanti saatFutureselesaiprint("C")langsung dijalankan → tampil C
ā”ļø Sampai sini output:
Apa yang Terjadi di cetakB() ?
Penjelasan:
- Fungsi ini bertipe
Future<String>→ artinya akan menghasilkan nilai di masa depan await Future.delayed(...)→ menunggu selama 2 detik- Selama menunggu, main thread tidak berhenti
- Setelah 2 detik:
- print
"B" - return
"Berhasil cetak B"
- print
Urutan Output Lengkap
Jika dijalankan, hasil akhirnya :
Kenapa Bisa Begitu?
Karena cetakB() tidak memblokir eksekusi utama.
Alurnya seperti ini:
- Program mulai
- Cetak A
- Jalankan async function (ditunda)
- Cetak C
- Setelah 2 detik:
- Cetak B
- Jalankan
.then()→ cetak hasil return
Visualisasi Alur Eksekusi
Bayangkan seperti ini :
Perbedaan then() vs await
Kode tadi menggunakan .then(), tapi bisa juga ditulis dengan await agar lebih mudah dibaca :
Output versi ini :
Kapan Harus Menggunakan Asynchronous?
Gunakan asynchronous ketika:
- Menghindari UI freeze (Flutter)
- Mengambil data dari internet
- Proses berat atau lama
- Operasi database
Kesimpulan
- Synchronous: berjalan berurutan, mudah dipahami tapi bisa lambat
- Asynchronous: tidak blocking, lebih cepat dan efisien
Futureadalah kunci utama async di Dartasync/awaitmembuat kode async lebih readable.then()cocok untuk chaining
Belum ada komentar. Jadilah yang pertama!