【发布时间】:2023-03-24 03:17:01
【问题描述】:
sn-p 是
var name = firebase.firestore().collection('users_info').doc(uid).get().then(async function(doc) {
const usr = await doc.data().name;
console.log(usr);
return await(usr);
});
console.log(name);
name 记录以下内容
Promise {<pending>}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: "hello"
和 usr 记录你好,请帮助我获取名称中的值。
【问题讨论】:
-
所有
async函数都返回一个承诺——总是。因此,您的函数的调用者需要使用.then()或await从返回的promise 中获取值。没有办法解决这个问题。此外,return await(usr)没有任何用处。它应该只是return usr。无论您是执行return usr还是return await usr,您的函数都会返回一个promise。async函数将使返回值成为 promise 的解析值。知道当你的函数遇到第一个await时,这就是函数返回承诺的地方,这也许很有用。
标签: javascript ecmascript-6 promise