您的代码涉及使用 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中文网其他相关文章!