Tuesday, October 22

Memahami Javaskrip yang tak Segerak (Async, Asinkron)

Berlatarbelakang sebagai seorang pengaturcara PHP (yang tak serius), saya sudah terbiasa arahan koding dilaksana secara baris demi baris. Satu persatu. Pada saya itu agak mudah dan senang untuk menjangkakan hasilnya kerana dalam kehidupan seharian juga begitu. Fokus diberi pada satu-satu arahan / benda / misi agar pelaksana itu mudah menerima dan memahami arahan dan mudah juga untuk dikerjakan kerana hanya ada satu kepala, sepasang mata, dua tangan dan dua kaki, didegup satu jantung.

Berlainan dengan dunia pemprograman web client, arahan tidak dititah atau diturut seperti yang sepatutnya. Ada dua jenis ragam yang harus saya biasakan diri: sync (segerak) dan async (tak segerak). Kebiasaannya jenis yang segerak itu memang saya maklum kerana lakunya persis seperti arahan-arahan PHP yang biasa.



Maksud tak segerak disini (menurut fahaman saya), sesebuah set arahan telah disusun baris demi baris tapi pelaksanaan arahan adalah secara selari. Ini bermakna setiap baris arahan dilaksana pada masa yang sama! Untuk faham lanjut mengenai tak segerak ini, cuba anda perhatikan cara memuatkan sesebuah laman web ke pelayar internet anda.




Ukuran rangkaian ini menunjuk bagaimana sesebuah laman web dimuat ke dalam pelayar. Pelayar akan memanggil fail utama dahulu yakni HTML fail. Kemudian baru fail-fail sampingan. Dalam fail HTML terkandung pula beberapa fail lain seperti CSS untuk (tata-rias), Javaskrip (untuk interaktif pengunjung), gambar dan lain-lain lagi. Dulu (sebelum aktif guna google chrome) fahaman saya adalah, sekiranya fail Javaskrip dibubuh di dalam HEAD, maka fail-fail yang duduk di baris terakhir dalam BODY akan dimuat selepas fail Javaskrip yang berada di dalam HEAD dimuat sempurna ke dalam pelayar. Tetapi fahaman ini salah. Tidak kira dimana kedudukan fail itu berada, semua fail akan dimuat turun serentak yakni SELARI. Jadi ia tidak menurut urutan baris seperti jangkaan saya.

Dalam Javaskrip juga begitu. Ia tidak menunggu segala leceh dan ocehan yang dialami oleh kod baris diatas. Saya harus kekal waras mengenai hakikat pelaksanaan begini sepanjang pemprograman Javaskrip kerana sekiranya tidak, alamatnya saya akan membuang masa dan duduk lebih lama depan komputer untuk tafakur akan hal ini.

Saya telah pun mula memeluk fahaman asinkron ini beberapa waktu yang lalu. Alhamdulillah ada beberapa kaedah saya jumpa dalam jQuery dan UnderscoreJS. Berikut adalah contoh gunaan dalam BackboneJS dan jQuery bersama:



Dibawah ini pula adalah contoh gunaan dalam UnderscoreJS:



Sekiranya anda punya contoh tak segerak / asinkron / async dalam kehidupan, ayuh kongsikan bersama agar kehidupan tambah bermutu dan penuh makna

2 comments:

Hafiszan Kamarudin said...

Ini jika dan hebat boleh, macam saya pening tengkok mesti tambah ilmu lagi nampaknya.

Shubhi said...

kepala terus terasa berat dan senget sebelah baca dan cuba fahamkan benda tu semua...