Promise? Let’s Async/Await

Bagi yang belum mengetahui apa itu Async/Await, berikut ini adalah sedikit penjelasannya:
- Async/Await adalah salah satu cara untuk mengatasai masalah asynchronous pada Javascript selain menggunakan callback dan promise.
- Untuk menggunakan Async/Await, kembalian dari suatu fungsi harus merupakan suatu Promise. Async/Await tidak dapat berdiri tanpa adanya Promise.
- Tidak seperti Promise, dengan Async/Await maka suatu baris kode dapat tersusun rapi mirip dengan kode yang sifatnya synchronous.
- Pada implementasi Async/Await, kita menggunakan kata kunci async sebelum fungsi. Await sendiri hanya bisa digunakan pada fungsi yang menggunakan async.
- 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.
- 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 :D
Kunjungi juga blog pribadi saya di pionize.com

