Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menggunakan Async/Await untuk Menjeda Pelaksanaan untuk Panggilan Balik dalam JavaScript?

Bagaimana untuk Menggunakan Async/Await untuk Menjeda Pelaksanaan untuk Panggilan Balik dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-10-29 14:16:02509semak imbas

How to Use Async/Await to Pause Execution for Callbacks in JavaScript?

Menggunakan Async/Await to Jeda Pelaksanaan untuk Panggilan Balik

Apabila berurusan dengan panggilan balik, adalah wajar untuk menjeda pelaksanaan fungsi sehingga panggilan balik telah mengembalikan nilai. Dalam pengaturcaraan segerak, ini boleh dicapai dengan mekanisme menyekat seperti join(). Walau bagaimanapun, dalam pengaturcaraan asynchronous, ini selalunya tidak diingini.

Andaikan anda mempunyai fungsi panggil balik yang menjamin untuk dipanggil tepat sekali dan anda ingin mengubah suai fungsi berikut untuk menggunakan async/wait:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}

Matlamatnya adalah untuk menukarnya kepada fungsi tak segerak yang menunggu pelaksanaan panggilan balik, seperti ini:

async test() {
  return await api.on( 'someEvent' );
}

Async/menunggu sahaja tidak boleh mencapai ini, kerana ia memerlukan Janji untuk dikembalikan melalui api .on(). Untuk membetulkannya, kita boleh membungkus panggilan balik dalam fungsi Promise-returning:

function apiOn(event) {
  return new Promise(resolve => {
    api.on(event, response => resolve(response));
  });
}

Sekarang, kita boleh menulis semula test() sebagai fungsi tak segerak:

async function test() {
  return await apiOn( 'someEvent' ); // await is optional here (returns a Promise)
}

Perhatikan bahawa async fungsi juga mengembalikan Janji sendiri. Untuk mendapatkan hasil sebenar daripada test(), ia perlu ditunggu dalam fungsi async luar:

async function whatever() {
  const response = await test();
  // use response here
}

Dengan memanfaatkan fungsi Promise-wrapping, kita boleh menggunakan async/waiit untuk menjeda pelaksanaan test() sehingga panggilan balik telah mengembalikan nilai.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Async/Await untuk Menjeda Pelaksanaan untuk Panggilan Balik dalam JavaScript?. 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