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

Adakah Fungsi JavaScript Async Sentiasa Mengembalikan Janji?

Patricia Arquette
Patricia Arquetteasal
2024-12-23 16:20:12304semak imbas

Do Async JavaScript Functions Always Return Promises?

Fungsi Async dan Pengembalian Janji Tersirat

Dalam JavaScript, fungsi async yang ditandakan oleh kata kunci async secara tersirat mengembalikan janji. Ini berlaku walaupun anda secara eksplisit mengembalikan nilai bukan janji atau tidak memulangkan apa-apa langsung.

Pembungkus Janji Tersirat

Jika anda tidak memulangkan secara eksplisit janji, nilai yang anda pulangkan akan secara automatik dibalut dengan janji.

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

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

Ini bermakna walaupun pulangan nilai ialah nombor, ia akan ditukar kepada janji untuk tujuan pemprosesan tak segerak.

Janji Terbuka

Janji buka bungkus automatik, bermakna jika anda kembali janji untuk nilai dari dalam fungsi async, anda akan menerima janji untuk nilai (bukan janji untuk janji untuk value).

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

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

Gelagat Tidak Konsisten

Gelagat fungsi async sememangnya boleh kelihatan tidak konsisten dengan pernyataan pulangan tradisional, kerana ia berbeza apabila mengembalikan nilai bukan janji secara eksplisit . Ini kerana fungsi async menggunakan jenis fungsi khas yang dipanggil penjana, yang tidak selalu mengembalikan nilai yang sama seperti pernyataan pulangan.

Atas ialah kandungan terperinci Adakah Fungsi JavaScript Async 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