首页 >web前端 >js教程 >为什么异步 Promise 最初显示待处理状态?

为什么异步 Promise 最初显示待处理状态?

Linda Hamilton
Linda Hamilton原创
2024-12-12 11:11:09525浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn