Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Anda Boleh Mencipta Fungsi Tak Segerak Tersuai dalam JavaScript Tanpa Menggunakan `setTimeout()`?

Bagaimanakah Anda Boleh Mencipta Fungsi Tak Segerak Tersuai dalam JavaScript Tanpa Menggunakan `setTimeout()`?

DDD
DDDasal
2024-10-25 06:51:29319semak imbas

How Can You Create Custom Asynchronous Functions in JavaScript Without Using `setTimeout()`?

Membuka Kunci Gelagat Tak Segerak dalam JavaScript

Seperti yang dicontohkan oleh kod yang disediakan, fungsi tak segerak boleh digabungkan ke dalam JavaScript untuk "membatalkan" aliran pelaksanaan . Walau bagaimanapun, persoalan timbul: bagaimanakah fungsi tak segerak tersuai boleh dibuat tanpa menggunakan setTimeout()?

Realiti Fungsi Tak Segerak dalam JavaScript

Walaupun ia kelihatan seperti seseorang boleh mencipta fungsi tak segerak tersuai sepenuhnya, itu tidak mungkin sepenuhnya. Pada satu ketika, teknologi asli mesti dimanfaatkan, seperti:

  • Pemasa: setInterval dan setTimeout
  • Panggil Balik: XMLHttpRequest, WebSockets dan API Fail
  • Acara: API HTML5 dengan sokongan onload

Dalam kes animasi jQuery, misalnya, setInterval digunakan untuk mencapai tingkah laku tak segerak.

Merangkul Mekanisme Tak Segerak Asli

Oleh itu, kunci untuk mencipta fungsi tak segerak tersuai terletak pada pemahaman dan penggunaan mekanisme asli ini. Berikut ialah beberapa contoh praktikal:

  • setInterval: Gunakan setInterval untuk melaksanakan fungsi secara berkala pada selang waktu tertentu.
  • XMLHttpRequest: Hantar permintaan HTTP tak segerak dan kendalikan respons dengan panggilan balik.
  • Pendengar Acara: Daftarkan pendengar acara untuk membalas tindakan pengguna, seperti klik atau penekanan kekunci.

Untuk contohnya, untuk mencipta fungsi "animate" tak segerak tersuai, seseorang boleh menggunakan pemasa, seperti berikut:

<code class="javascript">function animate(element, options, callback) {
  // Define the animation duration
  const duration = options.duration || 2000;

  // Set up a timer to gradually change the element's width
  const intervalID = setInterval(function() {
    // Perform some animation logic here
    // Incrementally change the element's width
    element.width += 10;

    // If the desired width has been reached, clear the timer and execute the callback
    if (element.width >= options.width) {
      clearInterval(intervalID);
      callback && callback();
    }
  }, duration / 10);
}

// Example usage
$('#link').click(function() {
  console.log("Enter");
  animate($('#link'), { width: 200 }, function() { console.log("finished"); });    
  console.log("Exit");    
});</code>

Dengan menggunakan teknik asli seperti setInterval, anda boleh mencipta fungsi tak segerak tersuai yang disepadukan dengan lancar ke dalam acara JavaScript mekanisme pengendalian.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mencipta Fungsi Tak Segerak Tersuai dalam JavaScript Tanpa Menggunakan `setTimeout()`?. 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