Поэтому я пытаюсь использовать данные (в частности, код iso3 страны) из одного API, чтобы загрузить его LatLong из другого API, чтобы затем нанести на карту.
Проблема, с которой я столкнулся, заключается в том, что я загружаю первый API (местоположения стихийных бедствий) в preload () в массив, затем я не могу получить доступ к информации внутри этого массива, чтобы получить iso3 всех перечисленных бедствий, если я не получу доступ к нему из draw ( ).
Проблема в том, что когда я затем загружаю данные latlong в карту, они отображаются как undefined, но когда я загружаю latlong из preload (), данные о бедствии не определены.
Этот код работает до тех пор, пока не будет вызван mapM () и он не попытается загрузить значения latlong из временного массива, поскольку они возвращаются undefined, независимо от того, где я эти запросы GET всегда undefined.
Любая помощь приветствуется, я новичок в JS, так что не беспокойтесь!
Я не знаю, я не пользовался этим сайтом какое-то время, но вижу, что на него сложнее ответить, ха-ха, к тому же все это почти ничего для меня не значило, будет ли это трудно исправить?
В будущем, пожалуйста, публикуйте минимальный воспроизводимый пример вместо скриншота вашего кода.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


На подобные вопросы часто лучше всего ответить, прочитав ссылка:
This method is asynchronous, meaning it may not finish before the next line in your sketch is executed.
Это означает, что ваша линия temp[i] = loadJSON(urlC); запускает но не заканчивает перед выполнением вашей линии console.info(temp);.
Это связано с тем, что функция loadJSON() - это асинхронный, что означает, что она работает в фоновом режиме, а не в основном потоке. Обычно это полезно, потому что вы не хотите, чтобы ваш код зависал каждый раз, когда вы делаете новый запрос, но это также приводит к ошибкам, подобным вашей.
Чтобы обойти это, вы можете добавить функция обратного вызова к вашим строкам loadJSON(). Опять же из ссылки:
function setup() {
noLoop();
var url =
'https://earthquake.usgs.gov/earthquakes/feed/v1.0/' +
'summary/all_day.geojson';
loadJSON(url, drawEarthquake);
}
function draw() {
background(200);
}
function drawEarthquake(earthquakes) {
// Get the magnitude and name of the earthquake out of the loaded JSON
var earthquakeMag = earthquakes.features[0].properties.mag;
var earthquakeName = earthquakes.features[0].properties.place;
ellipse(width / 2, height / 2, earthquakeMag * 10, earthquakeMag * 10);
textAlign(CENTER);
text(earthquakeName, 0, height - 30, width, 30);
}
Обратите внимание, что функция drawEarthquake() передается в функцию loadJSON(). Когда функция loadJSON() завершится, она автоматически вызовет функцию drawEarthequake().
Возможно, вы захотите сделать что-то подобное.
Скорее всего, вы пытаетесь получить доступ к асинхронным данным в синхронном коде. Это может быть обработано с помощью обратных вызовов, обещаний или async await. Кстати, почему вы разместили снимок экрана своего кода вместо реального кода?