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

Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-28 15:05:13896semak imbas

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;
};

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

console.log(getJSON()); // returns Promise

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

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

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!

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