Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?

Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?

Mary-Kate Olsen
Lepaskan: 2024-11-28 15:05:13
asal
836 orang telah melayarinya

Why Do Async/Await Functions Always Return Promises?

Async/Await: Membongkar Misteri Janji

Apabila memulakan alam fungsi async/menunggu, seseorang mungkin menghadapi teka-teki yang menarik . Nampaknya fungsi async sentiasa mengembalikan objek Promise, yang membawa kepada kekeliruan apabila mencuba pengelogan konsol terus.

Mari kita mendalami fenomena ini dan membongkar selok-beloknya. Setiap fungsi async mematuhi paradigma Promise, mengembalikan objek Promise yang merangkum hasil operasi. Pernyataan menunggu berfungsi sebagai cara untuk menjeda pelaksanaan fungsi sehingga Janji sama ada diselesaikan atau ditolak.

Walaupun seseorang mungkin menganggap bahawa menunggu secara automatik membuka Janji, itu tidak berlaku. Menggunakan await hanya menyebabkan fungsi menunggu dan seterusnya mengembalikan Janji yang diselesaikan serta-merta. Walau bagaimanapun, Janji perlu dibuka secara eksplisit menggunakan await atau .then() untuk mengakses hasil sebenar.

Untuk menggambarkan, pertimbangkan coretan kod berikut yang menyerupai permintaan tak segerak:

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar'}), 2000)
  ));

  const json = await request();
  return json;
};
Salin selepas log masuk

Jika seseorang cuba untuk konsol log keputusan terus, output akan menjadi a Janji:

console.log(getJSON()); // returns Promise
Salin selepas log masuk

Walau bagaimanapun, menggunakan .then() untuk membuka Promise mendedahkan objek JSON yang dijangkakan:

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }
Salin selepas log masuk

Kesimpulannya, fungsi async sentiasa mengembalikan Janji, dan menunggu hanya digantung pelaksanaan sehingga resolusi. Untuk mendapatkan hasil, pembongkaran eksplisit menggunakan await atau .then() diperlukan. Mekanisme ini memastikan integriti model Promise dan menghalang tingkah laku yang tidak dapat diramalkan yang mungkin timbul jika akses terus kepada hasil Promise dibenarkan.

Atas ialah kandungan terperinci Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?. 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