его прогнать циклом?
const objectManager = new ymaps.ObjectManager({clusterize: true}) let currentId = 0 const getData = () => fetch(url) getData() .then(data => data.json()) .then(function (data) { const objects = [] data.forEach((elem, index) => { if (index <= 3) ymaps.geocode(elem.Adress) .then(res => { objects.push( { type: 'Feature', id: currentId++, geometry: { type: 'Point', coordinates: res.geoObjects.get(0).geometry._coordinates }, properties: { hintContent: elem.Result + ' ' + elem.Name, balloonContent: elem.Adress } } ) }) }) return objects }) .then((objects)=>{ setTimeout(()=>{ objectManager.add(objects) myMap.geoObjects.add(objectManager) }, 3000) })
Сейчас только через таймаут работает. Почемуто .then не ждет
а может взять и на async/await переписать, раз непонятно, как работают промисы?
может. только что тогда делать с ymaps.geocode(elem.Adress)?
она возвращает промис
Там же будет такой же мрачный код.
У тебя там в середине где-то лишний промис получился, которого ты не дожидаешься.
в плохих руках да
"мрачный код", надо запомнить
ymaps.geocode(elem.Adress) - промис. как с ним быть?
С промисом можно только одно делать — await
Обсуждают сегодня