Ваша проблема в том, что вы на самом деле не понимаете (пока), как работают callbacks
и async/await
.Ваше выполнение кода идет не так, как вы хотите, поэтому вы приземляетесь на части, где переменные еще не установлены.
Эта проблема не может быть решена только с помощью этого конкретного вопроса / ответа.
Пожалуйста, посмотрите несколько учебных пособий (или прочитайте, если хотите) о том, что такое обратные вызовы.
Если вы свободны в выборе версии своего JS, тогда я предлагаю вам использовать async/await
.Это делает вещи НАМНОГО более структурированными, читаемыми и понятными.
НО: Сначала вам нужно полностью понять это.Просто скопируйте его, что приведет к ошибкам и заблуждениям (поверьте мне).
Просто поищите эти руководства в Google, я лично искал бы учебники для YouTube (есть сотни хороших структурированных).