Saya telah melakukan banyak membaca online mencoba mencari cara menulis kode JavaScript asinkron. Salah satu teknik yang banyak muncul dalam penelitian saya adalah menggunakan callback. Sementara saya memahami proses bagaimana menulis dan menjalankan fungsi callback, saya bingung mengapa callback tampaknya secara otomatis membuat eksekusi JavaScript tidak sinkron. Jadi, pertanyaan saya adalah: bagaimana cara menambahkan fungsi callback ke kode JavaScript saya membuat kode tersebut secara otomatis async?
javascript
asynchronous-programming
Zach Dziura
sumber
sumber
Jawaban:
Tidak. Hanya menerima panggilan balik atau menyampaikan panggilan balik tidak berarti itu tidak sinkron.
Misalnya,
.forEach
fungsi ini mengambil panggilan balik tetapi sinkron.The
setTimeout
mengambil callback terlalu dan asynchronous.Menghubungkan ke acara asinkron apa pun di Javascript selalu membutuhkan panggilan balik tetapi itu tidak berarti memanggil fungsi atau meneruskannya selalu asinkron.
sumber
Rahasia "sihir" adalah bahwa peristiwa yang Anda tetapkan untuk panggilan balik tidak sinkron. Mereka diimplementasikan "di bawah tenda" untuk mengurus apa pun yang mereka lakukan (seperti mengambil sesuatu dari server jauh) di latar belakang, di luar kotak pasir JS. Dan setelah mereka selesai dengan pekerjaan mereka, mereka memberikan mesin JS pesan untuk memanggil suatu acara. Ketika mesin JS selesai dengan apa pun yang sedang dilakukannya, ia akan memanggil setiap peristiwa yang sedang antri (atau menunggu pesan baru) dan kemudian panggilan balik Anda "secara ajaib" dipanggil secara tidak sinkron!
( CATATAN: Ini adalah ikhtisar konseptual tingkat tinggi dari topik yang tidak merinci, karena mesin JS yang berbeda akan mengimplementasikan berbagai hal dengan cara yang berbeda. Tetapi ini adalah gagasan umum tentang cara kerjanya.)
sumber