subrutin
a sequence of programmer life

Advertisement

Dasar – Dasar Pemrograman Asinkron di Node.js (Bagian -1)

0 485

Jika pernah membaca tutorial atau artikel tentang Node.js, mungkin pembaca sering menemui banyak istilah seperti asynchronous, non-blocking, event-based dan single-threaded. Semua istilah itu akurat untuk menggambarkan Node. Namun semua istilah tersebut sangatlah abstrak terutama bagi mereka yang baru mempelajari Node.js

Advertisement

Salah satu hal yang membedakan dengan bahasa pemrograman lain ialah bahwa Nodejs dibuat dengan salah satu prinsip yang bernama asynchronous, yang berarti aplikasi, akan tetap melanjutkan eksekusi ke statement berikutnya, meskipun statement sebelumnya belum selesei dieksekusi.  Hal ini akan terasa aneh terlebih bagi mereka yang terbiasa melakukan pemrograman secara sekuensial (synchronous)

Misalkan buat sebuah file bernama async-dasar.js lalu tulis program berikut

console.log('mulai');

console.log('selesei');

Program tersebut sangat sederhana, saat program dijalankan ia akan menampilkan tulisan di layar: “mulai” baru kemudian  “selesei” di baris berikutnya. Program tersebut berjalan secara sinkron.

node async-basic.js
mulai
selesei

Lalu bagaimana jika program berjalan asinkron? Satu statement setTimeout, yang menggunakan fungsi arrow => sebagai argumen pertama akan disisipkan di dalam program. Argumen pertama ini biasa disebut fungsi callback yang akan dieksekusi ketika waktu yang ditentukan pada argumen kedua telah tercapai. Pattern callback adalah salah satu pattern di dalam pemrograman Node.js yang penting untuk diketahui, karena hal tersebut terkait dengan pemrograman asynchronous. Penulis akan bahas ini di kesempatan lain.

 
console.log('mulai'); 
setTimeout(() => {
    console.log('di dalam callback');
}, 2000);
console.log('selesei'); 

Jika program berjalan secara sinkron, maka ketika mencapai statement di baris kedua, runtime akan menunggu hingga statement tersebut selesei dieksekusi lalu kemudian berpindah ke baris kelima. Sehingga ekspetasinya program akan menampilkan nilai seperti berikut

mulai
di dalam callback
selesei

namun ternyata tidak demikian, alih – alih program akan menampilkan di layar seperti berikut

node async-dasar.js
mulai
selesei
di dalam callback

Hal itu berarti program berjalan secara  asyncronous alias non-blocking, dimana node.js runtime tidak perlu menunggu 2 detik (2000 ms) terlebih dahulu di baris 2, node.js hanya mendaftarkan fungsi callback dipanggil di 2 detik kemudian, untuk kemudian  langsung melanjutkan eksekusi ke baris 5. fungsi Callback akan terpicu  kondisi waktu 2 detik tercapai

Statement setTimeout tersebut sebenarnya hanyalah simulasi untuk mengilustrasikan  bagaimana proses asynchronous bekerja. Di dalam dunia nyata, statement setTimeout tersebut bisa saja sebuah fungsi yang memerlukan waktu dalam eksekusinya, misalnya  query ke database, komputasi, ataupun memanggil API lain.

 

 

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.