Promise? Let’s Async/Await

Bagi yang belum mengetahui apa itu Async/Await, berikut ini adalah sedikit penjelasannya:

  1. Async/Await adalah salah satu cara untuk mengatasai masalah asynchronous pada Javascript selain menggunakan callback dan promise.
  2. Untuk menggunakan Async/Await, kembalian dari suatu fungsi harus merupakan suatu PromiseAsync/Await tidak dapat berdiri tanpa adanya Promise.
  3. Tidak seperti Promise, dengan Async/Await maka suatu baris kode dapat tersusun rapi mirip dengan kode yang sifatnya synchronous.
  4. Pada implementasi Async/Await, kita menggunakan kata kunci asyncsebelum fungsi. Await sendiri hanya bisa digunakan pada fungsi yang menggunakan async.
  5. Fungsi yang menggunakan async, sebenarnya mempunyai kembalian berupa promise. Tetapi, Async/Await tidak dapat digunakan di top level kode kita, karena harus dibungkus oleh suatu fungsi.
  6. Setiap baris yang menggunakan await, akan ditunggu sampai Asynchronous Promise tersebut di resolve.

Fitur Async/Await sudah diperkenalkan di NodeJS sejak versi 7.6, dan di versi 8 sudah didukung secara total. Jika kita menggunakan Async/Await pada versi NodeJS di bawah 7.6, maka kita membutuhkan transpiller seperti BabelJS.

Mari kita implementasikan Promise dengan menggunakan Async/Await.

Kode di atas, secara singkat dapat kita ubah dengan menggunakan Async/Await:

Dengan melihat contoh di atas, secara singkat kita bisa melihat perbandingan dengan Promise:

  • Kode yang kita tulis akan jauh lebih rapi dan mudah dibaca dibandingkan dengan menggunakan Promise.
  • Jika kita ingin menggunakan conditional statement seperti if, maka kita dapat menuliskannya seperti menulis kode synchronous. Contoh:
  • Error handling. Permasalahan yang sering terjadi adalah jika kita menggunakan Promise, maka ketika kode tersebut berada dalam blok try/catch dan terjadi kesalahan, maka fungsi catch tidak dapat menangkap kesalahan tersebut karena terjadi di dalam Promise.

Sedikit catatan tentang Async/Await:

Jika kita menggunakan Async/Await di dalam loop, kita tidak bisa menggunakannya secara langsung, contoh:

Kode di atas memang dapat berjalan, tapi tidak disarankan terutama jika kita menggunakan standard code seperti StandardJS atau AirBnB. Untuk mengatasinya dapat kita gunakan Promise.all:

Ok, dengan sedikit contoh di atas, saya harap dapat menambah pengetahuan Anda semua. Nantikan artikel berikutnya 😀

Ikuti terus juga blog pribadi saya di pionize.com

Tinggalkan Balasan