首頁 > web前端 > js教程 > 為什麼非同步 Promise 最初顯示待處理狀態?

為什麼非同步 Promise 最初顯示待處理狀態?

Linda Hamilton
發布: 2024-12-12 11:11:09
原創
513 人瀏覽過

Why Do Asynchronous Promises Initially Show a Pending State?

為什麼非同步Promise 最初顯示待處理狀態

您的程式碼涉及使用Promise 的非同步函數,但是當您嘗試存取Promise 內的令牌時,您會發現遇到“Promise { }”而不是已解析的令牌。

Promise 解析和待處理狀態

promise 代表一個可能需要時間才能完成的操作,它提供了一種在解決(成功完成)或拒絕(失敗)時處理操作結果的方法。最初,Promise 處於掛起狀態,直到其操作完成。

連結 Promise:延遲解析

在您的程式碼中,您從 google.login 傳回一個 Promise。當您嘗試立即存取權杖時,承諾仍處於待處理狀態;它還沒有解決。這表示您將收到 Promise { ; 的待處理狀態。 }.

捕獲 Promise 結果

要取得 Promise 的解析值,您需要使用其 .then 或 .catch 方法。這些方法提供了處理程序,這些處理程序將分別在 Promise 解決或拒絕時執行。透過連結 .then 處理程序,您可以根據 Promise 的解析值執行操作。

範例:捕捉 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板