Rumah >hujung hadapan web >tutorial js >Adakah Panggilan Balik JavaScript Sentiasa Asynchronous?

Adakah Panggilan Balik JavaScript Sentiasa Asynchronous?

Patricia Arquette
Patricia Arquetteasal
2024-10-20 11:14:301086semak imbas

Are JavaScript Callbacks Always Asynchronous?

Adakah Semua Panggilan Balik JavaScript Asynchronous?

Bertentangan dengan kepercayaan umum, bukan semua panggilan balik JavaScript adalah tak segerak. Sebagai contoh, panggil balik yang digunakan dalam Array#sort dan String#replace dilaksanakan secara serentak.

Panggil Balik Asynchronous

Panggil balik tak segerak ialah yang dilaksanakan kemudian, membenarkan kod lain untuk berjalan serentak. Lazimnya, panggil balik tak segerak melibatkan permintaan sumber luaran (cth., panggilan jQuery AJAX).

Panggilan jQuery AJAX

Fungsi jQuery AJAX boleh serentak dan tak segerak, bergantung pada tetapan bendera "async". Walau bagaimanapun, penyemak imbas biasanya lalai kepada operasi tak segerak untuk objek XMLHttpRequest (digunakan dalam jQuery AJAX).

Asynchronicity in Node.js

Dalam Node.js, asynchronicity diperkenalkan melalui fungsi tertentu seperti fail I/O, process.nextTick, setTimeout dan setInterval. Operasi tak segerak di luar fungsi ini tidak disokong.

Mencipta Fungsi Tak Segerak

Sebelum ECMAScript 6, fungsi tak segerak dalam JavaScript bergantung pada fungsi yang disediakan hos (mis., seterusnya, Tick. Node.js, setTimeout dalam penyemak imbas).

ECMAScript 6 Promises

ECMAScript 6 memperkenalkan janji sebagai konsep peringkat bahasa untuk pengaturcaraan tak segerak. Panggilan balik yang dilampirkan pada janji (melalui kemudian atau tangkapan) sentiasa dipanggil secara tidak segerak, walaupun janji itu telah diselesaikan apabila ia dilampirkan.

Oleh itu, cara terbaik untuk memastikan pelaksanaan panggilan balik tak segerak adalah dengan menggunakan janji dan bukannya langsung panggilan balik.

Atas ialah kandungan terperinci Adakah Panggilan Balik JavaScript Sentiasa Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn