В приведенном ниже фрагменте кода я назначаю часть данных из указанного документа c (последний добавленный документ, где «userName» равно «coder») глобальной переменной с именем «video». Из-за того, что это асинхронный процесс, когда я консоль журнала "видео" в последней строке, ничего не выводится. Я хочу, чтобы данные выводились, когда я записываю консоль «видео» в последней строке. Я понимаю, почему это происходит, но я не смог это исправить. Я пытался найти различные решения, включающие обещания, и я не нашел решения, связанного с этим конкретным случаем. Я не хочу помещать весь остальной код в функцию then (). Я просто хочу, чтобы данные были доступны в глобальной переменной вне функции then (). Разве это невозможно выполнить sh без помещения всего остального моего кода в функцию then ()? Любая помощь будет отличной!
let video = "";
let promise = new Promise((resolve, reject) => {
db.collection('groups').where('userName','==','coder').orderBy("timestamp", "desc").limit(1).get().then((snapshot) => {
snapshot.docs.forEach(doc => {
resolve(doc.data().videoLink);
});
});
});
promise.then((success) => {
video = success;
});
console.log(video);