banner
13:58:03
Back-end
M. Badar Wildani

Konsep Asynchronous di javascript / node.js

Konsep concurrent sudah lama sekali diterapkan dalam bahasa pemrograman, sebuah konsep dimana suatu eksekusi kode tidak harus blocking mengakibatkan eksekusi kode lainnya menjadi terhambat dan harus menunggu eksekusi kode lainnya selesai terlebih dahulu.

Terlebih lagi dengan trend sekarang ini yang mengedepankan jumlah core / thread daripada meningkatkan power di satu core, konsep asynchronous dan paralallel programming sudah menjadi hal yang lumrah untuk diketahui dan diterapkan.

Struktur

Yang dapat digunakan di JS

Di Javascript sendiri, penerapan asynchronous sudah diterapkan sejak lama. Namun butuh beberapa iterasi pembaruan pengembangan sehingga fitur ini dapat diterapkan dengan praktis oleh developer. Berawal dari penggunaan callback yang hampir disediakan pada setiap function di javascript.

Callback

BukuModel.save(function(err) {
  if (err) {
    console.error(err)
    return
  }
  // action setelah callback
})
// action yang lain

kode diatas adalah implementasi dari sebuah action yang dapat kita eksekusi hanya ketika proses menyimpan data buku sudah selesai. Selagi data buku itu disimpan, kita bisa melakukan action yang lain.

callback ini sudah lama digunakan digunakan para developer dan tentunya callback ini masih jauh dari kata sempurna ketika para developer menuntut penggunaan yang praktis. Ketika kita akan melakukan banyak hal yang berurutan terjadilah sesuatu yang disebut dengan "callback hell". Contohnya ketika kita ingin kita menyimpan data buku -> simpan data transaksi -> data struk -> publish notifikasi, dan harus dilakukan secara berurutan, kode bakal seperti berikut ini

BukuModel.save(function(err) {
  TransaksiModel.save(function(err) {
    Struk.save(function(err) {
      Notifier.publish(function(err) {
        // 
      })
    })
  })
})

Async Await

Di versi standar javascript ECMAScript 2017, Async Await diperkenalkan untuk mengatasi masalah callback hell,

qui labore officiis laboriosam distinctio dolorum, odio sapiente?

Wildani © 2023, All rights reserved