Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mengakses Nilai Pulangan daripada Fungsi Async dengan async-await?

Bagaimana untuk Mengakses Nilai Pulangan daripada Fungsi Async dengan async-await?

DDD
DDDasal
2024-11-12 22:39:02309semak imbas

How to Access Return Values from Async Functions with async-await?

Memulangkan Nilai daripada Fungsi Async dengan async-await

Apabila memanggil fungsi tak segerak menggunakan sintaks async-wait, mengakses nilai pulangan secara terus boleh mengakibatkan Janji yang belum selesai. Artikel ini meneroka cara menyelesaikan isu ini.

Menunggu Nilai Di Luar Skop Async

Percubaan awal anda untuk log nilai pulangan fungsi getData tidak berjaya kerana anda cuba menunggu nilai di luar skop tak segerak. Sintaks async-wait hanya boleh digunakan dalam fungsi atau blok tak segerak (ditandakan dengan kata kunci async).

IIFE Asynchronous to Wrap Logging

Untuk menyelesaikan isu ini, anda boleh membungkus pernyataan console.log anda dalam Ungkapan Fungsi Segera Diminta (IIFE) asynchronous seperti ini:

(async () => {
  console.log(await getData());
})();

Ini memastikan pengelogan dilakukan dalam konteks tak segerak, membolehkan sintaks menunggu berfungsi dengan betul.

Mengabaikan Async/Await for Promise Returns

Dalam contoh anda, axios mengembalikan Janji. Dalam kes sedemikian, anda boleh memudahkan kod anda dengan meninggalkan sintaks async/menunggu untuk fungsi getData anda dan menggunakan objek Promise secara langsung:

function getData() {
  return axios.get('https://jsonplaceholder.typicode.com/posts');
}

Kemudian, anda masih boleh menggunakan IIFE tak segerak untuk log hasil sebagai sebelum:

(async () => {
  console.log(await getData());
})();

Dengan mengikuti pendekatan ini, anda boleh memastikan bahawa nilai dikembalikan daripada fungsi tak segerak menggunakan async-await diakses dan dikendalikan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Nilai Pulangan daripada Fungsi Async dengan async-await?. 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