Dart Futures - Async Await
Sebelumnya kita sudah membahas tentang Futre pada dart, dan sekarang kita masuk ke pembahasan selanjutnya yaitu async await.
Contoh Code
import 'dart:io';
void main(List<String> arguments) async {
var username = getUserName();
username.then((value) => print(value));
username.onError((error, stackTrace) {
print(error);
return "error";
});
}
Future<String> getUserName() async {
print('Siapa nama kamu?:');
String? name = stdin.readLineSync();
return name ?? "";
}
Future<String> getUserName() async {
- Future<String> artinya kita akan membuat sebuah asynchronous function yang mengembalikan nilai bertipe String
- async artinya kita akan membuat sebuah asynchronous function
- stdin.readLineSync(); artinya kita akan mengambil input dari user
Dart Async Await
void main(List<String> arguments) async {
countDown(3);
}
countDown(int n) {
print("baris pertama");
Future.delayed(Duration(seconds: n)).then((value) {
print("baris kedua");
});
print("baris terakhir");
}
Output:
baris pertama
baris terakhir
baris kedua
Update kodingan menjadi
void main(List<String> arguments) async {
countDown(3);
}
countDown(int n)async{
print("baris pertama");
await Future.delayed(Duration(seconds: n)).then((value) {
print("baris kedua");
});
print("baris terakhir");
}
Output:
baris pertama
baris kedua
baris terakhir
Perhatikan perbedaan async dan await pada kodingan dan outputnya ya.
Kodingan pertama kita tidak menggunakan async dan await, sehingga baris terakhir akan dijalankan terlebih dahulu, kemudian baris kedua. Kodingan kedua kita menggunakan async dan await, sehingga baris kedua akan dijalankan terlebih dahulu, kemudian baris terakhir.
apa bedanya ?
Saat kita menggunakan async dan await, maka kita akan menunggu proses asynchronous selesai terlebih dahulu, baru kemudian kita akan menjalankan baris selanjutnya. Jika kita tidak menggunakan async dan await, maka kita akan menjalankan baris selanjutnya tanpa menunggu proses asynchronous selesai.
{{< youtube id="0R4eJ8O4ZSU" autoplay="true" color="white" yt_start="12" yt_end="24">}}
✨”Jika Kamu tidak sanggup menahan lelahnya belajar maka kamu harus sanggup menahan perihnya kebodohan” ✨Imam Syafi'i