您的程式碼涉及使用Promise 的非同步函數,但是當您嘗試存取Promise 內的令牌時,您會發現遇到“Promise {
promise 代表一個可能需要時間才能完成的操作,它提供了一種在解決(成功完成)或拒絕(失敗)時處理操作結果的方法。最初,Promise 處於掛起狀態,直到其操作完成。
在您的程式碼中,您從 google.login 傳回一個 Promise。當您嘗試立即存取權杖時,承諾仍處於待處理狀態;它還沒有解決。這表示您將收到 Promise {
要取得 Promise 的解析值,您需要使用其 .then 或 .catch 方法。這些方法提供了處理程序,這些處理程序將分別在 Promise 解決或拒絕時執行。透過連結 .then 處理程序,您可以根據 Promise 的解析值執行操作。
let AuthUser = function(data) { return google.login(data.username, data.password).then(token => { return token } ) } let userToken = AuthUser(data) console.log(userToken) // Promise { <pending> } userToken.then(function(result) { console.log(result) // "Some User token" })
在此範例中,我們新增一個 .then 處理程序AuthUser 傳回的承諾。當 Promise 解析時,處理程序將執行,並將接收解析後的值作為參數。 .then 中的 console.log 語句將列印實際的使用者令牌。
Promises 提供了一種處理非同步操作的結構化方法。要存取 Promise 的解析值,需要將其與 .then 或 .catch 處理程序連結。只有在 Promise 解決之後,解析的值才可用於您的程式碼。
以上是為什麼非同步 Promise 最初顯示待處理狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!