Dart Futures - Async Await @ Cong Fandi | 2022-10-30T10:00:00+07:00 | 2 minutes read | Update at 2022-10-30T10:00:00+07:00

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


✨”Jika Kamu tidak sanggup menahan lelahnya belajar maka kamu harus sanggup menahan perihnya kebodohan” ✨Imam Syafi’i

© 2018 - 2022 The Ngoding

Powered by Hugo with theme Dream.

avatar

The NgodingSebuah cita-cita hanyalah mimpi jika tidak tahu cara mewujudkannya