Я пытаюсь дождаться вызова getJson
и обработать возвращаемые данные.Я видел много ответов и пытался использовать $.ajax
async: false
(не работает, потому что запрос является междоменным), обратные вызовы и часть .done
основного вызова $.ajax
.Сейчас я пытаюсь асинхронно ждать.Мой код выглядит так:
var ths = getTrailheads(turl);
console.log("trailheads promise");
console.log(ths);
ths.then(function(data) {
addTrailheadsToMap(data);
});
async function getTrailheads(turl) {
var result = await $.ajax({
url: turl,
datatype: 'json'
});
return result;
}
Иногда это работает, если вызов ajax возвращается достаточно быстро, но в основном журнал консоли показывает:

Показывает обещание с status
, установленным на Resolved
.Объект обещания есть, но статус объекта показывает Processing
.
Это частый случай, но общие ответы, похоже, не работают для меня, поэтому любая помощь будет оценена.
обновление:
preGetTrailheads(turl);
}
async function preGetTrailheads(turl) {
var ths = await getTrailheads(turl);
console.log("trailheads promise");
console.log(ths);
addTrailheadsToMap(ths);
}
async function getTrailheads(turl) {
var result = await $.ajax({
url: turl,
datatype: 'json'
});
return result;
}
Теперь я возвращаю объект вместо обещания, но объект все еще "Обрабатывается", а затем завершается ошибкой, когда я пытаюсь его использовать. объект дампа
Обновление 2: Я уверен, что вы оба, ребята, правы, и то, как вы описываете, это то, как вы это делаете.У меня здесь есть кодекс https://codepen.io/mckee80/pen/KJBbvz.Это работает большую часть времени.Кажется, что он завершается сбоем только при первом запуске (кроме того, выходные данные попадают в журнал браузера, если он успешен).Мне просто нужно выяснить, почему это происходит в моем приложении.Странно, это работает для данного набора данных, если я перезагружаю страницу.