Saturday, December 17, 2016

Node.Js Part 2 " Mengenal Konsep non-blocking(Asynchronous) dan bloking(asynchronous ) pada Node.Js"



Assalamu Alaikum Coders
Admin akan share lagi pengetahuan seputar Node.Js lagi yaitu mengenal node.js lebih dalam lagi part 2
Oke silahkan di simak tapi sebelum memulai kita harus mengetahui konsepnya terlebih dahulu iya kan !

1.     Pengertian  synchronous dan asynchronous

           Asynchronous disini berarti non-blocking I/O. Ini berarti setiap operasi asynchronous harus segera mungkin mengembalikan nilai agar program tidak perlu menunggu proses baca tulis ke I/O. I/O sendiri adalah komponen sebuah mesin atau komputer untuk urusan input dan output data. Komponen I/O memiliki kecepatan baca tulis jauh lebih kecil dari kecepatan prosesor dalam memproses data. Kebalikan dari asynchronous, sebuah program yang menjalankan operasi synchronous akan menunggu operasi itu selesai baru kemudian program dapat melanjutkan operasi lainnya.

         Sedangkan istilah event-driven disini sama dengan event-based programming yaitu urutan atau flow program ditentukan oleh sebuah events. Jika diartikan secara bahasa event itu sama dengan kejadian, sedangkan Wiki mendefinisikan events ini dengan perubahan pada sebuah kondisi objek. Perpindahan mouse dari window satu ke window lain, penekanan tut-tut keyboard, sampai pada request halaman website. Paling dasar sekaligus terpenting dari event-driven ini adalah event-handler atau callback. Callback ini sebuah fungsi atau subroutine yang bisa sebagai argument pada operasi-operasi asynchronous. Dia akan dipanggil sekali setelah operasi selesai dilakukan.

           Di dalam NodeJS terdapat operasi-operasi yang sifatnya synchronous dan asynchronous, tapi keunggulan NodeJS ini ada pada non-blocking I/O alias asynchronous nya.
Asynchronous dan event-driven yang ada pada NodeJS ini disebut-sebut sebagai bentuk pemrograman baru dari pendahulunya, multi-threaded. Berikut adalah dua program yang mengerjakan operasi yang sama tapi berbeda, satu menggunakan synchronous dan yang satunya lagi menggunakan asynchronous
  

      2.       Analogi konsep asynchronous dan synchronous

Pertama-tama akan saya gambarkan dalam bentuk proses yg berurutan:

state awal

1.      Kondisi awal, sedang main DOTA 2. Lagi seru-serunya nih, dapet hero favorit juga.
2.      Perut udah dangdutan gara-gara seharian belum makan dan di dapur semua makan ludes, apesnya lagi sendiri juga dirumah.

proses sync

1.      Demi kesehatan akhirnya meninggalkan peperangan dan pergi ke toko terdekat beli mie instant (kira-kira butuh waktu 10 menit, maklum jalan kaki cuy)
2.      Sesampainya dirumah langsung masak mie (butuh waktu 10 menit), udah dicacat-cacatin temen nih di chat T_T
3.      Akhirnya bisa makan juga, meski dengan penuh pengorbanan 1 match. :(
4.      Setelah makan balik ngadep PC dan memelas serta minta maaf ke anggota clan. Maaf ane leave gan.

proses async

1.      Disaat lapar pun tetap tenang dan dengan sigap ambil hape trus pesen makanan cepat saji, dan diakhir pembicaraan dengan lantang bilang “ga pake lama ya mbak :3”. (ga sampai 1 menit)
2.      Lanjut main DOTA deh sambil nunggu pesenan datang.
3.      Ting tong bunyi bel rumah bunyi. Alhamdulillah pesenan dah dateng dan pas match baru aja selesai.
4.      Ambil pesenan dan ga lupa bayar. Trus makan deh.
5.      Setelah makan balik WAR lagi.yeah

Dari cuplikan proses diatas dapat diambil kesimpulan pada saat proses sync, tiap proses harus diselesaikan terlebih dahulu agar bisa melanjutkan ke proses selanjutnya dan harus berurutan.
Berbeda dengan async proses, pada async proses masih tetap bisa pada state awal tetapi dalam kondisi menunggu proses yang berjalan diluar system seperti proses masak makanan cepat saji sampai makanan sampai di rumah. Dan pada saat proses lain tersebut selesai ia akan memberi tanda bahwa proses sudah selesai.

Konsep synchronous (bloking)  

Konsep asynchronous (non-Bloking)


okey itu mungkin konsep yang bias saya jelaskan sekarang tinggal praktekBuat folder dengan isi seperti gambar di bawah:

 
Masukan text di bawah  ini pada bloking.txt dan non-bloking.txt

 a. Bloking

masukkan text di bawah :
 "This nesting of function definitions inside function calls makes the code appear more linear and many find it easier to read. However, it can be tricky for new developers"

selanjutnya buat  file bernama bloking.js lalu isi file tersebut dengan contoh kode di bawah ini : 


var fs = require("fs");
var data = fs.readFileSync('bloking.txt');
console.log(data.toString());
console.log("- Program selesai");

lalu hasilnya akan seperti ini :




b.   non-bloking 

selanjutnya buat  file bernama non-bloking.js lalu isi file tersebut dengan contoh kode di bawah ini :


var fs = require("fs");
fs.readFile('non-bloking.txt',function(err, data){
     if(err) return console.log(err);
     console.log(data.toString());
});                     
console.log("- program selesai");
       
 lalu hasilnya akan seperti ini : 

 

Penjelasan Singkat

kedua contoh kode di atas (block dan non-block code) menjelaskan tentang konsep panggilan blocking dan nonblocking code. contoh pertama menunjukkan bahwa blocking code akan terus mengeksekusi tugas yang diberikan yaitu membaca file bloking.txt barulah setelah itu program akan mengeksekusi kode di bawahnya untuk mencetak “- Program Selesai”. lalu pada contoh kedua, program tidak menunggu dalam menyelesaikan tugas untuk membaca file, tetapi program akan terus mengeksekusi perintah di bawahnya yaitu mencetak “- Program Selesai” dan dalam waktu yang sama pula program akan mencetak isi file setelah selesai dari tugasnya yaitu pembacaan file.

Kesimpulan

Jadi blocking code dieksekusi secara berurutan dari atas sampai bawah sedangkan kalau non-blocking code tidak dieksekusi secara berurutan. dengan demikian agak sulit menerapkan logika terstruktur di program non-blocking code dibandingkan dengan blocking code, sehingga dalam kasus ini program mesti menggunakan data untuk diproses dimana data tersebut harus disimpan dalam blok yang sama untuk membuatnya dieksekusi secara berurutan.

Oke mungkin Cuma itu yang dapat saya share salam coders
atau codenya bisa di donwload di sini 
pass : http://bukacode.blogspot.co.id

Unknown

Author & Editor

Happy Coding

7 comments: