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" });
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:
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!