Rumah >hujung hadapan web >tutorial js >Bolehkah Fungsi JavaScript Asynchronous Dipaksa Melaksanakan Secara Segerak?

Bolehkah Fungsi JavaScript Asynchronous Dipaksa Melaksanakan Secara Segerak?

DDD
DDDasal
2024-12-03 03:24:10684semak imbas

Can Asynchronous JavaScript Functions Be Forced to Execute Synchronously?

Bolehkah Fungsi Javascript Asynchronous Dipanggil Secara Segerak?

Walaupun pengaturcaraan tak segerak adalah perkara biasa dalam Javascript, senario tertentu mungkin memerlukan panggilan fungsi segerak untuk sedia ada. pangkalan kod. Walaupun mengakui sifat suboptimum pendekatan ini, panggilan tak segerak mungkin perlu diubah suai ke pangkalan kod segerak yang lebih besar kerana kekangan masa.

Menyekat Fungsi Panggilan Balik

Cabarannya terletak pada menyekat pelaksanaan fungsi panggilan sehingga panggilan balik daripada fungsi tak segerak adalah diterima. Pertimbangan utama termasuk:

  • Kemustahilan Menyekat UI: Menyekat masa jalan Javascript sudah pasti akan membekukan pengalaman UI.
  • Pembolehubah Global Tinjauan: Pendekatan alternatif melibatkan tinjauan pembolehubah global yang ditetapkan oleh panggilan balik dalam fungsi panggilan. Ini boleh dicapai menggunakan pemasa selang waktu, menyemak berulang kali sehingga pembolehubah global diisi.

Contoh Pelaksanaan:

function doSomething() {
  var data;

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

  myAsynchronousCall(param1, callBack);

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

Pemfaktoran semula untuk Pematuhan Asynchronous:

Walau bagaimanapun, ia berbaloi mengambil perhatian bahawa pendekatan yang ideal kekal untuk mengubah suai fungsi panggilan dan lulus panggilan balik untuk mengendalikan operasi tak segerak. Ini mengekalkan integriti tak segerak tanpa mengorbankan fungsi pangkalan kod segerak.

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

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});

Atas ialah kandungan terperinci Bolehkah Fungsi JavaScript Asynchronous Dipaksa Melaksanakan Secara Segerak?. 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