Bagaimana untuk \'Menyegerakkan\' Panggilan Javascript Asynchronous?

Barbara Streisand
Lepaskan: 2024-11-17 13:50:02
asal
910 orang telah melayarinya

How to

Menyegerakkan Panggilan JavaScript Tak Segerak

Pengenalan

Fungsi JavaScript Tak Segerak membolehkan kami melaksanakan tugas secara serentak tanpa menyekat benang utama. Walau bagaimanapun, dalam senario tertentu, mungkin perlu memanggil fungsi tak segerak secara serentak, dengan berkesan menyekat pelaksanaan semasa sehingga tugasan selesai.

Pelaksanaan

Bertentangan dengan popular kepercayaan, adalah mustahil untuk benar-benar menyekat pelaksanaan JavaScript secara tidak segerak tanpa menjejaskan UI. Satu pendekatan untuk mensimulasikan penyekatan adalah dengan meninjau pembolehubah global, menunggu untuk ditetapkan oleh fungsi panggil balik.

function doSomething() {

  // Global variable for callback data
  window.data = null;

  function callBack(d) {
    window.data = d;
  }

  // Start asynchronous call
  myAsynchronousCall(param1, callBack);

  // Start polling interval
  var intvl = setInterval(function() {
    if (window.data) {
      clearInterval(intvl);
      console.log(data);
    }
  }, 100);
}
Salin selepas log masuk

Walaupun kaedah ini mencapai tingkah laku separa menyekat, ia tidak sesuai kerana ia boleh membawa kepada overhed prestasi yang ketara.

Penyelesaian Pilihan

Jika boleh, adalah lebih baik untuk lulus fungsi panggil balik kepada panggilan tak segerak dan minta ia mengendalikan hasilnya apabila bersedia:

function doSomething(func) {

  function callBack(d) {
    func(d);
  }

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});
Salin selepas log masuk

Pendekatan ini mengelakkan overhed pengundian dan membolehkan pemprosesan tak segerak yang lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk \'Menyegerakkan\' Panggilan Javascript Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan