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
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:
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"
var fs =
require("fs");
var data =
fs.readFileSync('bloking.txt');
console.log(data.toString());
console.log("-
Program selesai");
b.
non-bloking
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
atau codenya bisa di donwload di sini
pass : http://bukacode.blogspot.co.id
keren bang
ReplyDeleteterimah kasuh
ReplyDeleteSangat membantu
ReplyDeletePenjelasannya mudah dimengerti, cocok memang masuk page one Google ini postingan.
ReplyDeleteMantap mas
Terimakasih telah membuat artikel ini :)
ReplyDeletePenjelasannya mudah dimengerti
thanks gan
ReplyDeletemantap, informasinya sangat bermanfaat
ReplyDelete