javascript - Promise 返回一个函数而不是一个对象

标签 javascript typescript promise es6-promise

我正在使用节点模块 fbgraph 来检索 Facebook 用户的数据并在我们的应用程序中创建帐户。

我有以下代码,它包含在异步函数中:

const newUser = await new Promise((resolve, reject) => {
  graph.get(url, (err, res) => {
    if (err) {
      return reject(err);
    }

    const user = new User();
    user.firstName  = res.first_name;
    user.lastName   = res.last_name;
    user.email      = res.email;

    return resolve(user);
  });
});

this.register(newUser);

我无法将 newUser 变量传递给我的注册函数,并且收到此错误:

Argument of type '{}' is not assignable to parameter of type 'User'.

在记录 newUser 时,它似乎是我期望的正确的 User 对象,但是当我记录 newUser.constructor 时,它似乎是实际返回的是 [Function: User]

我对 Promise 并不是特别有经验,我觉得问题出在某个地方。非常感谢任何帮助!

最佳答案

Typescript 无法推断实际的 Promise 类型,因此默认为某种类型 - 在本例中 {} .

您应该明确 Promise并创建Promise<User>类型即

const newUser = await new Promise<User>((resolve, reject) => {
    //...
})

关于javascript - Promise 返回一个函数而不是一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50598499/

相关文章:

javascript - 如何通过页面上的按钮在本地保存当前 HTML 页面?

javascript - 无法将服务返回的对象分配给 $scope

angular - Electron Angular2(angular-cli)要求内部模块失败

css - 如何创建 Material Design 径向 react 动画

c++ - 这种使用 std::promise 线程安全吗?

javascript - $urlRouterProvider.when() 内的 Angular-UI Resolve Promise 对象

javascript - 如何从 foreach 循环中获取选中复选框的 ID

javascript - 如何通过 Python 使用 GhostDriver 处理警报?

typescript - NestJS - 避免返回用户密码

Javascript Promise.all 不显示在最后