Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi Asynchronous Mengembalikan Janji Tertunda Daripada Nilai Segera?

Mengapa Fungsi Asynchronous Mengembalikan Janji Tertunda Daripada Nilai Segera?

DDD
Lepaskan: 2024-12-13 19:20:11
asal
311 orang telah melayarinya

Why Do Asynchronous Functions Return Pending Promises Instead of Immediate Values?

Mengapakah fungsi tak segerak mengembalikan Promise dengan status belum selesai dan bukannya nilai?

Kod mentakrifkan fungsi tak segerak, AuthUser, yang menggunakan google.login() dan mengembalikan janji yang dihasilkannya. Apabila fungsi itu digunakan, janji dilog dengan status belum selesai kerana keputusannya masih belum diselesaikan.

Penyelesaian:

Untuk mengakses nilai janji yang diselesaikan, ia mesti dirantai dengan .then() walaupun ia masih belum selesai. Contohnya:

AuthUser(data)
  .then((token) => {
    console.log(token); // "Some User token"
  });
Salin selepas log masuk

Butiran:

Janji ialah operasi sehala. Setelah diselesaikan, nilainya dihantar ke kaedah .then() atau .catch() tanpa mengira keadaannya (diselesaikan atau belum selesai). Nilai pulangan .then() ialah nilai janji yang diselesaikan.

Dalam kod yang disediakan, AuthUser mengembalikan janji secara langsung, menjadikan nilai penyelesaiannya tidak tersedia sehingga .then() digunakan.

Wawasan Tambahan:

  • Janji/A spec menyatakan bahawa jika pengendali .then() mengembalikan nilai, janji diselesaikan dengan nilai tersebut. Jika ia mengembalikan janji lain, janji asal diselesaikan dengan nilai janji berantai yang diselesaikan.
  • Pengendali .then() berantai akan sentiasa mengandungi nilai janji berantai yang telah diselesaikan yang dikembalikan dalam .then() sebelumnya.
  • Jika pengendali .then() mengembalikan janji, nilai yang diselesaikan janji berantai itu diserahkan kepada yang berikut .then().

Atas ialah kandungan terperinci Mengapa Fungsi Asynchronous Mengembalikan Janji Tertunda Daripada Nilai Segera?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan