@beduin01

Как запустить функцию только после того как переменная получит данные?

Видимо я плохо понимаю асинхронную модель работы JS.
Ситуация следующая. Есть функция которая получает данные. Нужно вызывать другую функцию только после того, как данные получены.

Мне упорно кажется, что в следующем коде цикл for начинает работать еще до того как переменная получила данные:

getBaseMapByLayerIdContent(id);
console.log("Content was added for layer with id: ", id);

console.log("My Object is: ");
console.log(this.LoadedBaseMapLayersContent);

for(obj of this.LoadedBaseMapLayersContent) // уже выполняется, а в getBaseMapByLayerIdContent данных еще нет
{
console.log("can't get this string");
}


Вот полный код:
if(!this.LoadedBaseMapLayers.includes(id)) // если слой не был загружен, то загружаем его
                {
                  getBaseMapByLayerIdContent(id);
                  console.log("Content was added for layer with id: ", id);

                  console.log("My Object is: ");
                  console.log(this.LoadedBaseMapLayersContent); // данные выводятся, значит они есть

                  for(obj of this.LoadedBaseMapLayersContent)
                  {
                    console.log("А вот эта строка не вызывается. Как если бы переменная была пустая");
                  }
                }


Как исправить ситуацию?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 2
@axeax
а еще правильнее использовать промисы https://learn.javascript.ru/promise
Ответ написан
Комментировать
@Sn0wSky
Дак откуда данные берутся? Если в Вашей функции что-то аяксом подгружается, то в callback'ах аякса и пишите обработку полученных данных
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы