Kesalahan Penggunaan Promise Javascript

Andrew Junior Ongi Karyanto
SkyshiDigital
Published in
2 min readApr 17, 2017

--

Jika kita menggunakan Javascript, salah satu masalah yang sering kita hadapi adalah asynchronous. Asynchronous sendiri memungkinkan sebuah baris dieksekusi tanpa harus ditunggu, contohnya ketika ada baris B1 dan B2 dan baris B1 bersifat asynchronous, maka B2 akan jalan terlebih dahulu tanpa perlu menunggu proses di B1 selesai.

Untuk mengatasi masalah yang ditimbulkan karena pola asynchronous tersebut, ada metode callback, namun callback ini akan menimbulkan masalah callback hell, dimana akan terjadi callback bertingkat. Contohnya:

Untuk mengatasi masalah tersebut, ada metode lain yang bisa digunakan yaitu Promise. Contohnya

Dalam penggunaannya Promise akan sangat membantu kita, namun untuk itu sebaiknya kita mengenal terlebih dulu beberapa kesalahan mendasar penggunaan Promise.

Kesalahan dasar pemula #1: Promise berbentuk piramida

Kesalahan dasar pertama adalah pola Promise yang kita buat menjadi berbentuk piramida dan mirip seperti callback hell yang sudah kita bahas di atas tadi. Contoh:

Untuk mengatasi hal tersebut, kita bisa menerapkan pola Promise yang lebih baik. Contoh:

Pada contoh di atas, kita selalu membuat promise jika dan hanya jika sebuah promise sebelumnya telah selesai.

Kesalahan dasar pemula #2: Promise dalam forEach

Ketika Promise digunakan pada sebuat loop, sering terjadi kesalah mendasar dengan tidak memanfaatkan fungsi dari Promise itu sendiri. Contoh:

Masalah yang terjadi di atas adalah fungsi tersebut berjalan secara asynchronous sehingga tidak menunggu fungsi db.remove() . Untuk mengatasinya kita dapat memanfaatkan Promise.all() . Contoh:

Secara singkat, Promise.all() akan menerima input berupa array of Promises yang akan menghasilkan Promise yang akan diselesaikan setelah Promise yang lain diselesaikan.

Kesalahan dasar pemula #3: Melupakan penggunaan .catch()

Ketika tidak menggunakan .catch() maka kita akan kesulitan untuk mengetahui kesalahan yang terjadi, untuk itu kita harus membiasakan penggunaan catch() untuk setiap Promise yang kita buat. Contoh:

Kesalahan dasar pemula #4: Menggunakan “deferred”

Pada awalnya kita mengenal deferred, namun saat ini kita sudah memiliki banyak library pendukung yang lebih baik seperti Q, When, RSVP, Bluebird, Lie, dll.

Kesalahan dasar pemula #5: Memanfaatkan Promise tanpa mengembalikan Promise tersebut

Contoh:

Kesalahan yang terjadi adalah kita tidak akan mengetahui proses dan kesalahan yang ada.

Untuk itu kita disarankan untuk menggunakan return .

Jika kita tidak menambah return maka dalam fungsi then berikutnya tidak akan ada data yang bisa kita pakai, dan ketika terjadi error kita akan kesulitan untuk melakukan pengecekan.

Sebenarnya masih ada beberapa kesalahan mendasar yang lainnya, tapi sebaiknya kita bahas di kesempatan berikutnya :D

Kunjungi juga blog pribadi saya di pionize.com

--

--

Andrew Junior Ongi Karyanto
SkyshiDigital

Backend Lead at Skyshi Digital Indonesia