Saya sering menjumpai istilah ini, dan bahkan setelah Googling, masih tidak dapat memahami apa sebenarnya artinya. Adakah definisi yang mudah dipahami (idealnya dengan contoh) tentang peristiwa asinkron yang dapat diberikan seseorang?
Terima kasih!
Saya sering menjumpai istilah ini, dan bahkan setelah Googling, masih tidak dapat memahami apa sebenarnya artinya. Adakah definisi yang mudah dipahami (idealnya dengan contoh) tentang peristiwa asinkron yang dapat diberikan seseorang?
Terima kasih!
Jawaban:
Contoh non-pemrograman:
Synchronous Anda ingin pizza untuk makan malam dan Anda keluar dari jenis beku. Jadi, Anda harus berhenti bermain WOW yang mengganggu guild Anda. Anda pergi ke dapur, membuat adonan, menutupinya dengan saus, menambahkan keju, dan membekapnya dengan topping bacon favorit Anda. Anda baru saja menghabiskan 20 menit waktu Anda membuat pizza dengan 10 menit lagi di oven. Timer berbunyi bip dan Anda mengeluarkan pai panas. Anda dapat duduk kembali di depan komputer Anda, makan pizza, dan melanjutkan serangan Anda.
Asynchronous Anda ingin pizza untuk makan malam sambil bermain WOW. Anda membuka jendela browser di monitor kelima Anda. Anda memuat situs Pizza dan memesan pizza bacon keju ekstra dengan saus bawang putih lemak daging. Anda kembali ke penggerebekan Anda dan setelah 20 menit bel pintu berdering. Anda mendapatkan pizzanya. Anda duduk kembali di depan komputer Anda, makan pizza, dan melanjutkan serangan Anda.
Lalu apa bedanya? Satu cara Anda membuang 20-30 menit waktu WOW yang berharga, cara lain Anda membuang $ 20 plus tip.
Halaman Anda dikirim dari server ke browser klien, di suatu tempat di Internet. Browser telah menggambar halaman di layar, dan seseorang - atau sesuatu - sedang melihatnya. Ini permainan menunggu. Mata bergeser maju mundur, mengamati detail ini atau itu dalam lompatan cepat, sesekali melesat ke samping, menjauh dari layar, untuk menyelidiki gangguan di lingkungan. Jam terus berdetak. Halaman bersinar lembut, pasif, saat pengguna tidak aktif bergerak, tangan dengan longgar menutupi mouse, leher membungkuk dan mata semakin tertarik pada sesuatu yang mengundang yang ditawarkan halaman Anda.
Tiba-tiba, tanpa peringatan sama sekali, kursor mulai bergerak saat tangan pada mouse sedikit menegang dan mulai mendorong tonjolan plastik kecil di atas permukaan kasar meja. Saat mouse bergerak, penggantinya di layar bergerak dengan sangat mirip, melewati gambar-gambar menarik dan komentar jenaka di konten halaman Anda. Akhirnya keputusan dibuat, gerakan berhenti, satu atau dua otot berkontraksi sedikit, dan tombol mouse ditekan dengan jari yang kuat. Microswitch pada mouse memicu impuls elektronik, dan tiba-tiba browser mengetahui apa yang terjadi: klik mouse.
Dalam semua itu, segala sesuatu tentang apa yang telah dilakukan pengguna sambil menatap halaman telah terjadi dengan cara yang sama sekali tidak dapat diprediksi ke browser, ke kode klien apa pun di halaman web Anda, ke apa pun yang ada di server Anda. Tidak ada "waktu tunggu" yang bisa diketahui antara tindakan manusia. Oleh karena itu, tindakan, seperti yang ditransmisikan oleh peralatan yang terhubung ke komputer pengguna, terjadi ketika terjadi dan tidak sesuai dengan jam yang dapat diprediksi - yaitu, terjadi secara asinkron .
Pikirkan tentang akhir wawancara, dan mereka berkata, "Jangan hubungi kami, kami akan menelepon Anda". Itulah inti dari acara asynchronous.
Biasanya Anda mendefinisikan fungsi dan Anda memanggil fungsi secara eksplisit. Program Anda memiliki struktur yang dimulai dari baris 1, lalu baris 2, dan kecuali untuk beberapa kode kondisional dan iterasi, fungsi pemanggil, dll., Terdapat struktur sederhana, liner, dan sinkron.
Tetapi dalam beberapa kasus Anda memiliki tindakan yang dipicu oleh kejadian di luar kendali langsung program, hal-hal yang datang dari luar program, seperti kejadian antarmuka pengguna (pengguna mengklik mouse) atau kejadian jaringan (seseorang mencoba untuk terhubung ke server Anda). Kode Anda tidak menghasilkan peristiwa ini secara langsung. Mereka dibuat di luar program Anda, seringkali oleh OS berdasarkan pemantauan perangkat antarmuka pengguna dan sistem lainnya. Ini disebut peristiwa asynchronous.
Ingat saja, "Jangan hubungi kami, kami akan menelepon Anda"
"Dalam pemrograman, peristiwa asinkron adalah peristiwa yang terjadi secara independen dari aliran program utama. Tindakan asinkron adalah tindakan yang dijalankan dalam skema non-pemblokiran, yang memungkinkan alur program utama untuk melanjutkan pemrosesan."
"Dengan Ajax, aplikasi web dapat mengambil data dari server secara asinkron di latar belakang tanpa mengganggu tampilan dan perilaku halaman yang ada."
Ketika Anda mengklik Edit dan Simpan di SO, itu terjadi secara tidak sinkron.
Peristiwa asinkron adalah peristiwa yang berjalan di luar thread utama aplikasi.
Cara terbaik untuk memahaminya adalah dengan membandingkan dengan peristiwa yang berjalan secara sinkron. Contoh paling umum adalah memuat halaman web.
Saat Anda membuka halaman ini, Anda mengklik link dan menunggu halaman dimuat dan tidak dapat berinteraksi dengan atau menggunakan halaman ini sampai halaman selesai dimuat. Sebaliknya, jika halaman ini memiliki peristiwa AJAX (yaitu peristiwa JavaScript dan XML Asinkron) yang dikaitkan dengan beberapa tindakan pengguna, halaman ini akan memuat beberapa data dari sumber lain secara asinkron - secara paralel (secara teoritis) dengan tindakan lain yang terjadi.
Contoh dengan Dua Peristiwa Sinkron (A dan B): Pertama A melakukan sesuatu. Ketika A selesai B melakukan sesuatu.
Contoh dengan Dua Peristiwa Asinkron (A dan B): A dan B melakukan sesuatu pada waktu yang sama dan tidak ada peristiwa yang menunggu yang lain.
Berikut adalah contoh operasi asinkron di javascript (Anda harus membuka konsol javascript)
console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};
//OUTPUT:
//One!
//Three!
//Two!
Panggilan ke console.log('Two!')
akan dijalankan tanpa memblokir kode lainnya yang terjadi setelahnya.
Dalam skenario nyata, ganti setTimeout dengan seseorang yang mengklik tombol di halaman web. Respons terhadap klik tombol akan terjadi pada akhirnya, tanpa memblokir eksekusi kode lain seperti rendering halaman.
Sederhananya, itu berarti sesuatu yang terjadi setelah jangka waktu yang tidak diketahui, jadi jangan berharap hasil langsung.
Misalnya, "Bu, boleh saya minta lima dolar?"
Mengulurkan tangan saya untuk uang adalah saya mengharapkan dia segera menanggapi dengan memberi saya uang (sinkron).
Secara realistis, dia akan melihat saya sebentar, dan kemudian memutuskan untuk menanggapi ketika dia ingin (asynchronous).
Peristiwa asinkron adalah peristiwa yang tidak kita ketahui kapan akan terjadi di masa mendatang misalnya ketika server diminta untuk beberapa file, kita tidak tahu kapan itu akan memenuhi permintaan kita atau peristiwa UI kita tidak tahu kapan pengguna akan klik pada tombol atau elemen UI lainnya, tetapi meskipun hal lain pada halaman atau aplikasi sedang terjadi, hal itu tidak memblokir apa pun yang dikatakan halaman menjadi abu-abu semua UI hingga beberapa file dari server tidak datang atau beberapa peristiwa terjadi, semuanya independen ini adalah kekuatan peristiwa asinkron, katakan saja peristiwa independen
Synchronous Vs. Peristiwa Asinkron
Beberapa penangan peristiwa dipanggil segera saat peristiwa terjadi. Ini disebut peristiwa 'sinkron'. Contohnya adalah DocumentNew. Itu dipanggil segera setelah pengguna membuat dokumen baru.
Namun, beberapa peristiwa dipanggil segera setelah peristiwa itu terjadi, biasanya setelah beberapa saat tidak ada waktu. Ini disebut peristiwa 'asinkron'. Mereka asinkron karena akan merusak Source Insight jika makro yang ditulis pengguna dipanggil pada waktu yang tepat saat peristiwa terjadi.
Jika kode sinkron (atau sinkron), itu berarti setiap bagian kode berjalan secara berurutan, dan bagian kode berikutnya tidak dapat berjalan hingga yang sebelumnya selesai. Kebanyakan kode biasanya sinkron.
Jika kode asinkron (atau asinkron), itu berarti kode dapat berjalan secara terpisah dan independen dari kode lain. Jika ada kode asinkron di tengah-tengah sekumpulan kode sinkronisasi, dalam konteks pertanyaan khusus ini, kode asinkron hanya akan berjalan ketika kejadiannya dipicu, di mana pun Anda meletakkan kode sinkronisasi. Ini benar-benar terpisah dan tidak bergantung pada kode sinkronisasi dan berjalan setiap kali kejadiannya mengatakan, tidak hanya ketika bagian kode sebelumnya selesai berjalan. Beberapa contohnya untuk kode yang berjalan pada interval waktu, setelah file berhasil disimpan, setelah permintaan web dikirim, ketika pengguna mengklik tombol, atau setelah gambar dimuat.