Javascript 如何从承诺中获得价值?
这个片段是Javascript 如何从承诺中获得价值?,javascript,ecmascript-6,promise,Javascript,Ecmascript 6,Promise,这个片段是 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); 名字记录在下面 Promise{} __承
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);
名字记录在下面
Promise{}
__承诺
[[PromiseStatus]]:“已解决”
[[PromiseValue]]:“你好”
usr会记录hello,请帮助我获取名称中的值。您想链接一个then/catch来解析名称承诺,或者您可以将整个块包装在一个async/Wait中,并调用函数:
async function fetchData() {
try {
var name = await firebase.firestore().collection("users_info").doc(uid).get();
const usr = await doc.data().name;
console.log(usr);
console.log(name);
return usr;
} catch(e) {
console.log(e);
}
}
您希望链接一个then/catch来解析名称承诺,或者您可以将您拥有的整个块包装在一个async/await中,并调用函数:
async function fetchData() {
try {
var name = await firebase.firestore().collection("users_info").doc(uid).get();
const usr = await doc.data().name;
console.log(usr);
console.log(name);
return usr;
} catch(e) {
console.log(e);
}
}
所有
async
函数都返回一个承诺-始终。因此,函数的调用方需要使用.then()
或wait
从返回的承诺中获取值。这是没有办法的。而且,returnawait(usr)
没有任何用处。它应该是返回usr
。您的函数正在返回一个承诺,无论您是执行返回usr
还是返回等待usr
。async
函数将使返回值成为承诺的解析值。当函数到达第一个wait
时,函数返回承诺。所有async
函数都返回承诺,这一点可能很有用。因此,函数的调用方需要使用.then()
或wait
从返回的承诺中获取值。这是没有办法的。而且,returnawait(usr)
没有任何用处。它应该是返回usr
。您的函数正在返回一个承诺,无论您是执行返回usr
还是返回等待usr
。async
函数将使返回值成为承诺的解析值。如果您知道,当函数到达第一个wait
时,函数将返回承诺,这可能很有用。