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
Lepaskan: 2024-10-29 14:16:02
asal
508 orang telah melayarinya

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;
  });
}
Salin selepas log masuk

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

async test() {
  return await api.on( 'someEvent' );
}
Salin selepas log masuk

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));
  });
}
Salin selepas log masuk

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

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

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
}
Salin selepas log masuk

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!

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