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

Mengapa Fungsi Async/Menunggu Saya Masih Membalas Janji?

Barbara Streisand
Barbara Streisandasal
2024-12-02 02:08:10887semak imbas

Why Does My Async/Await Function Still Return a Promise?

Async/Await: Memahami Nilai Promise Return

Dalam kod anda, fungsi getJSON ialah fungsi tak segerak yang menggunakan sintaks async/wait. Seperti yang dinyatakan oleh soalan dengan betul, setiap fungsi tak segerak mengembalikan objek Janji. Operator await kemudiannya digunakan untuk menjeda pelaksanaan fungsi sehingga Janji diselesaikan atau ditolak.

Walau bagaimanapun, anda tidak boleh log hasil fungsi tak segerak secara langsung dengan console.log(getJSON()). Ini kerana tunggu hanya menyahgantung pelaksanaan fungsi dan membenarkan Janji menyelesaikan dengan hasilnya. Walau bagaimanapun, fungsi itu sendiri masih mengembalikan Janji yang mendasari, bukan hasil yang tidak dibalut.

Untuk mengakses hasil Janji, anda mesti sama ada menggunakan kaedah then(), seperti yang anda tunjukkan atau gunakan await lagi dalam yang lain fungsi tak segerak. Dalam kes anda, getJSON().then(json => console.log(json)) merekodkan hasil { foo: 'bar' } kerana ia merantai pengendali kemudian pada Promise yang dikembalikan oleh getJSON.

Seperti yang dinyatakan dalam jawapan, tingkah laku ini adalah asas kepada model Promise. Janji mewakili operasi tak segerak yang mungkin diselesaikan pada masa yang tidak ditentukan pada masa hadapan. Kaedah then() membolehkan anda menentukan tindakan yang perlu diambil apabila Promise diselesaikan.

Dengan memahami bahawa fungsi tak segerak sentiasa mengembalikan Promises, walaupun semasa menggunakan await, anda boleh mengendalikan dan menggunakan kod tak segerak dalam aplikasi anda dengan betul .

Atas ialah kandungan terperinci Mengapa Fungsi Async/Menunggu Saya Masih 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