从另一个函数中的promise内部返回一个值[重复]
Posted
技术标签:
【中文标题】从另一个函数中的promise内部返回一个值[重复]【英文标题】:Returning a value from inside a promise which is in another function [duplicate] 【发布时间】: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.. 有什么区别?
【参考方案1】:
当您返回一个 Promise 以获得您需要使用的结果时,请使用 .then()
const getUserData = mobile =>
getUserRecordFromAuth(mobile)
.then((userRecord) => console.log('uid', userRecord.uid));
【讨论】:
如果我想从 getUserData 返回 userRecord 怎么办?在then()
方法中获取值只会使我的 userRecord 保持在有限的范围内。如何返回整个 userRecord?以上是关于从另一个函数中的promise内部返回一个值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在异步函数内部,从回调函数返回值返回 Promise(undefined) [重复]
在异步函数内部,从回调函数返回值返回 Promise(undefined) [重复]