首页 > web前端 > js教程 > 为什么我的异步函数返回 `Promise { }` 而不是预期值?

为什么我的异步函数返回 `Promise { }` 而不是预期值?

Linda Hamilton
发布: 2024-12-09 22:03:12
原创
900 人浏览过

Why Does My Async Function Return `Promise {  }` Instead of the Expected Value?

为什么我的异步函数返回 Promise { ;而不是值?

问题:

在提供的代码中:

let AuthUser = data => {
  return google.login(data.username, data.password).then(token => { return token } )
}
登录后复制

执行以下命令时:

let userToken = AuthUser(data)
console.log(userToken)
登录后复制

输出是:

Promise { <pending> }
登录后复制

解释:

JavaScript 中的 Promise 用于表示异步操作。如果异步函数返回仍未解决的 Promise,则在打印时它将记录为“pending”。

要捕获异步调用的结果,必须在 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,你可以处理promise的结果,无论它是resolved还是resolved待处理。

详细信息:

Promise 只解析一次,解析后的值会传递给 .then 或 .catch 方法。 Promises/A 规范规定,如果 .then 处理程序中的函数返回一个值,则 Promise 将使用该值进行解析。如果处理程序返回另一个 Promise,则原始 Promise 将使用链式 Promise 的解析值进行解析。

以上是为什么我的异步函数返回 `Promise { }` 而不是预期值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板