Fungsi Async: Memahami Nilai Pulangan dan Janji
Walaupun fungsi async membenarkan anda menulis kod dalam gaya segerak, ia sememangnya mengembalikan janji. Ini boleh menyebabkan kekeliruan mengenai nilai pulangan kod anda.
Janji: Gambaran Keseluruhan Pantas
Janji ialah objek yang mewakili penyiapan atau kegagalan operasi tak segerak. . Mereka menyediakan dua kaedah utama:
Fungsi dan Janji Async
Fungsi Async sentiasa mengembalikan janji, walaupun anda tidak menggunakan kata kunci tunggu secara eksplisit . Janji ini mewakili hasil operasi async. Jika fungsi melemparkan ralat, janji akan menolak dengan ralat itu.
Penggunaan:
Janji dengan Fungsi Panggilan Balik:
<code class="javascript">const myAsyncFunction = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Asynchronous value'); }, 1000); }); }; myAsyncFunction() .then(result => { console.log(`Callback Result: ${result}`); }) .catch(error => { console.log(`Error: ${error}`); });</code>
Janji dengan Async/Await:
<code class="javascript">async function myAsyncFunction() { const result = await new Promise((resolve, reject) => { setTimeout(() => { resolve('Asynchronous value'); }, 1000); }); return result; } myAsyncFunction() .then(result => { console.log(`Await Result: ${result}`); }) .catch(error => { console.log(`Error: ${error}`); });</code>
Dalam contoh ini, myAsyncFunction mengembalikan janji yang diselesaikan dengan nilai 'Asynchronous value' selepas kelewatan 1 saat . Kaedah then dan catch mengendalikan keadaan yang diselesaikan atau ditolak, masing-masing.
Mengembalikan Janji
Jika anda ingin mengembalikan janji itu sendiri tanpa sebarang pengubahsuaian, anda boleh dengan mudah tulis:
<code class="javascript">const myAsyncFunction = () => { return new Promise(...); };</code>
Mengembalikan Nilai Yang Diubahsuai
Untuk mengembalikan nilai yang diubah suai daripada fungsi async, anda perlu mengendalikan hasil Promise dalam kaedah itu dan kembalikan nilai yang diubah suai. Contohnya:
<code class="javascript">async function myAsyncFunction() { const result = await new Promise(...); return result.toUpperCase(); }</code>
Fungsi ini mengembalikan janji yang diselesaikan dengan versi huruf besar hasilnya.
Atas ialah kandungan terperinci Apakah Nilai Pulangan Fungsi Async dan Bagaimana Ia Berkaitan dengan Janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!