Rumah > hujung hadapan web > tutorial js > Fungsi Async dalam JavaScript: Janji Tersirat atau Nilai Pulangan Eksplisit?

Fungsi Async dalam JavaScript: Janji Tersirat atau Nilai Pulangan Eksplisit?

Susan Sarandon
Lepaskan: 2024-12-17 18:36:12
asal
699 orang telah melayarinya

Async Functions in JavaScript: Implicit Promise or Explicit Return Value?

Fungsi Async: Pemulangan Janji Tersirat atau Kawalan Eksplisit?

Fungsi Async dalam JavaScript, dilambangkan dengan kata kunci async, sering dikatakan secara tersirat balas janji. Walau bagaimanapun, pemeriksaan lebih dekat mendedahkan bahawa realitinya lebih bernuansa.

Secara lalai, fungsi async memang akan mengembalikan janji jika janji tidak dikembalikan secara eksplisit. Ini bermakna kod berikut:

async function getVal() {
  const result = await doSomethingAsync();
  return result;
}
Salin selepas log masuk

sama dengan:

async function getVal() {
  const result = await doSomethingAsync();
  return Promise.resolve(result);
}
Salin selepas log masuk

Walau bagaimanapun, jika anda secara eksplisit memulangkan nilai bukan janji, fungsi akan membungkusnya secara automatik dalam janji . Sebagai contoh, dalam contoh berikut:

async function getVal() {
  return doSomethingNonAsync();
}
Salin selepas log masuk

getVal sebenarnya akan mengembalikan objek Promise yang mengandungi hasil doSomethingNonAsync().

Perlu diperhatikan bahawa tingkah laku ini berbeza daripada fungsi JavaScript tradisional. Apabila anda secara eksplisit mengembalikan nilai primitif daripada fungsi biasa, ia segera dikembalikan. Fungsi Async, bagaimanapun, sentiasa mengembalikan janji, membalut nilai bukan janji seperti yang diperlukan.

Ini mungkin kelihatan tidak konsisten, tetapi ia bercantum dengan konsep penjana dalam ES6. Penjana ialah fungsi yang tidak mengembalikan nilai yang sama seperti penyata pulangannya. Sebaliknya, ia menghasilkan satu siri nilai, yang boleh diulang menggunakan operator hasil.

Contohnya:

function* getVal() {
  yield doSomethingAsync();
  return 'finished';
}

// Logs an object.
console.log(getVal());

// Logs 'yikes' and then 'finished'.
for (const val of getVal()) {
  console.log(val);
}
Salin selepas log masuk

Atas ialah kandungan terperinci Fungsi Async dalam JavaScript: Janji Tersirat atau Nilai Pulangan Eksplisit?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan