Rumah >hujung hadapan web >tutorial js >Adakah Fungsi Async dalam JavaScript Sentiasa Mengembalikan Janji?

Adakah Fungsi Async dalam JavaScript Sentiasa Mengembalikan Janji?

Susan Sarandon
Susan Sarandonasal
2024-12-22 09:54:37733semak imbas

Do Async Functions in JavaScript Always Return Promises?

Janji Tersirat dalam Fungsi Async

Dalam JavaScript, fungsi async ialah fungsi yang boleh menunggu janji tidak segerak untuk melengkapkan dan mengembalikan nilainya. Walau bagaimanapun, salah tanggapan yang lazim ialah fungsi async secara tersirat mengembalikan janji untuk nilai yang dipulangkan.

Memahami Nilai Pulangan

Walaupun nampaknya fungsi async kembali secara tersirat janji, ini tidak sepenuhnya tepat. Nilai pulangan bagi fungsi async boleh menjadi salah satu daripada dua perkara:

  • Nilai bukan janji: Apabila fungsi async secara eksplisit mengembalikan nilai bukan janji, ia secara automatik membungkus nilai itu dalam janji.
  • Janji: Nilai pulangan bagi fungsi async yang dengan sendirinya merupakan janji kekal tidak berubah.

Contoh dengan Nilai Bukan Janji:

async function increment(num) {
  return num + 1;
}

increment(3).then(num => console.log(num)); // Logs: 4

Di sini, kami mengembalikan nombor daripada fungsi async. Walau bagaimanapun, output diperoleh melalui .then(), menunjukkan bahawa ia adalah janji yang telah diselesaikan kepada nilai 4.

Janji Eksplisit:

Jika kita secara eksplisit mengembalikan janji daripada fungsi async, kami menerima janji untuk nilai itu, bukan janji untuk a janji.

async function increment(num) {
  return Promise.resolve(num + 1);
}

increment(3).then(num => console.log(num)); // Logs: 4

Kes Luar Biasa:

  • Fungsi Async Kosong: Walaupun fungsi async tidak mempunyai pernyataan pulangan yang jelas, ia masih mengembalikan janji untuk undefined.
  • Tunggu dalam Fungsi Async: Menggunakan await dalam fungsi async tidak menjejaskan jenis nilai pulangan. Ia masih akan dibalut dengan janji jika nilai yang dikembalikan bukan janji.

Kesimpulan

Fungsi Async dalam JavaScript secara tersirat membalut nilai pulangan bukan janji dalam janji. Walau bagaimanapun, jika nilai pulangan sudah menjadi janji, ia tidak disentuh. Tingkah laku ini berbeza daripada pernyataan pulangan tradisional tetapi konsisten dengan prinsip asas penjana dalam ES6.

Atas ialah kandungan terperinci Adakah Fungsi Async dalam JavaScript Sentiasa Mengembalikan Janji?. 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