Видимо я плохо понимаю асинхронную модель работы 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("А вот эта строка не вызывается. Как если бы переменная была пустая");
}
}
Как исправить ситуацию?