Rumah > hujung hadapan web > tutorial js > Bagaimanakah kita boleh menggunakan Async/Await untuk mendapatkan semula dimensi imej dengan selamat daripada fungsi berasaskan panggil balik?

Bagaimanakah kita boleh menggunakan Async/Await untuk mendapatkan semula dimensi imej dengan selamat daripada fungsi berasaskan panggil balik?

DDD
Lepaskan: 2024-11-03 08:38:30
asal
468 orang telah melayarinya

How can we use Async/Await to safely retrieve image dimensions from a callback-based function?

Mencipta Janji daripada Panggilan Balik dengan Async/Await

Fungsi yang disediakan, getImageData, menggunakan panggilan balik untuk mendapatkan semula dimensi imej semasa dimuatkan. Walau bagaimanapun, sifat segerak JavaScript boleh mengakibatkan nilai tidak ditentukan jika imej tidak dimuatkan sepenuhnya sebelum mengakses sifatnya.

Untuk menangani perkara ini, kami boleh memanfaatkan janji dan async/menunggu untuk menjamin ketersediaan lebar dan ketinggian sebelum menggunakannya.

Menukar Panggilan Balik kepada Janji

Langkah pertama ialah menukar fungsi getImageData kepada janji. Ini boleh dicapai menggunakan pembina Promise:

<code class="javascript">function loadImage(url) {
  return new Promise((resolve, reject) => {
    const img = new Image();
    img.addEventListener('load', () => resolve(img));
    img.addEventListener('error', reject); // Handle errors
    img.src = url;
  });
}</code>
Salin selepas log masuk

Menggunakan Async/Await

Dengan fungsi loadImage sebagai janji, kita boleh menggunakan async/wait untuk memastikan imej dimuatkan sebelum mengakses dimensinya:

<code class="javascript">async function getImageData(url) {
  const img = await loadImage(url);
  return { width: img.naturalWidth, height: img.naturalHeight };
}
async function ready() {
  console.log(await getImageData(this.url))
}</code>
Salin selepas log masuk

Versi ini mengembalikan janji yang diselesaikan dengan dimensi imej hanya apabila imej telah selesai dimuatkan. Fungsi sedia kini boleh log dimensi ini tanpa menemui nilai yang tidak ditentukan.

Atas ialah kandungan terperinci Bagaimanakah kita boleh menggunakan Async/Await untuk mendapatkan semula dimensi imej dengan selamat daripada fungsi berasaskan panggil balik?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan