Похоже, что вы не возвращаете Promise
из своей функции - в функции getToken
нет оператора return вообще, поэтому сама функция просто возвращает undefined
. Внутреннее возвращаемое вами заявление разрешит обещание, и это хорошо, но вы должны обработать это разрешение.
Если вы вернете обещание так:
getToken(user_id) {
return this.afs.collection("tokens").ref.doc(user_id).get().then((doc) => {
if (doc.exists) {
console.log(doc.data().user_token); //displays the correct user_token value
return doc.data().user_token;
}
});
}
Вы сможете получить доступ к user_token
асинхронно, когда обещание разрешится, выполнив следующие действия:
getToken(user_id).then(user_token => {
handle_user_token_here(user_token);
});
Примечание : измененная функция вернет обещание. Поэтому вы не можете просто следующее:
let user_token = getToken(user_id);
// user_token here is a Promise object, not the token!
handle_user_token_here(user_token); // will not work.
Вы можете сделать это, хотя:
let user_token = getToken(user_id);
// user_token here is a Promise object, not the token!
user_token.then(user_token => handle_user_token_here(user_token)); // will work