Сегодня я немного кодировал в JS. По сути, у меня есть сервер, который возвращает результат в виде обещания.
Рассмотрим, по сути, следующий код:
let reviewData = [];
db.get()
.then(function (snap) {
snap.forEach(function (doc) {
reviewData.push(doc.data());
console.log(reviewData[0]); //this works
});
});
console.log(reviewData[0]); //this does not work here
Когда я пытаюсь получить доступ к reviewData вне этого кода, он оказывается пустым. Однако, когда я получаю доступ к данным обзора внутри функции then, они там.
Это имеет смысл, потому что db.get () возвращает обещание, которое разрешено. кнопка на моей веб-странице, которая выполняет функцию при нажатии.
<button onclick="doThis()">Click</button> //this code is in the html document
function doThis() {
console.log(reviewData[0]); //this works? Why?
}
Мой единственный вопрос в том, почему при срабатывании функции onclick данные из обещания видны? Ожидает ли функция onclick, когда будут отправлены данные reviewData?
Весь код скрипта находится в одном внешнем документе.