【问题标题】:Returning a value from inside a promise which is in another function [duplicate]从另一个函数中的promise内部返回一个值[重复]
【发布时间】:2018-08-09 08:28:32
【问题描述】:

我正在尝试从 firebase 中的 getUserRecordFromAuth 函数内部返回 userRecord,并使用它从 Firebase 中的身份验证中获取用户的 UID

问题是 userRecord.uid 总是返回undefined,即使我在getUserRecordFromAuth() 中返回了promise 的值。什么给了?

const getUserData = mobile => {
    const userRecord = getUserRecordFromAuth(mobile);

    console.log('uid', userRecord.uid);
}

const getUserRecordFromAuth = mobile => {

    const promise = auth.getUserByPhoneNumber(mobile);

    return promise.then(userRecord => {
        return userRecord;
    }).catch(error => {
        console.log(error);
    });
}

【问题讨论】:

  • getUserRecordFromAuth(...).then(....)
  • 你不是在“返回承诺的价值”(这是不可能的,因为它只会在未来可用),而是你在返回承诺本身。
  • 为了以更命令式的方式实现相同的结果,类似于您的代码,您还可以使用asyc - await 抽象与承诺返回异步函数。
  • @Bergi 关于价值返回承诺的任何建议,我可以检查。与 async/await.. 有什么区别?

标签: javascript node.js firebase promise es6-promise


【解决方案1】:

当您返回一个 Promise 以获得您需要使用的结果时,请使用 .then()

const getUserData = mobile => {
    getUserRecordFromAuth(mobile)
     .then((userRecord) => console.log('uid', userRecord.uid));
}

【讨论】:

  • 如果我想从 getUserData 返回 userRecord 怎么办?在 then() 方法中获取值只会使我的 userRecord 保持在有限的范围内。如何返回整个 userRecord?
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多