Это не повторяющийся вопрос.
Это запрос на помощь в поиске технического заключения, который не рассматривается в Как вернуть ответ от асинхронного вызова?
Если .then () нетрешая обещание, как я могу отследить проблему в этот момент?Похоже, что я что-то упустил технически, а не концептуально.
Эта функция извлекает данные из URL:
async function getINFO(source, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", source);
xhr.responseType = "document";
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200){
var text = xhr.responseXML.getElementsByTagName('pre')[0].innerHTML;
console.log(text);
callback(text);
}
}
xhr.send();
}
Внешне определенный обратный вызов:
function asyn_return(input){
console.log(input);
return input;
}
Данные поступаютобратно в AJAX.
Я хочу заполнить элемент атрибута (datastore.info
) данными.
info
- это строка URL.
Этопоместите в код, где я использую свою функцию извлечения данных AJAX:
if (typeof(info) === 'string'){
// If I have a URL retrieve the data and add it to the datastore object.
datastore.info = getINFO(info, asyn_return).then(data =>{
console.log(data);
return data;
});
//console.log(datastore.info);
} else {
datastore.info = "";
}
console.log(datastore.info);
console.log(data)
возвращает ожидаемые данные, но datastore.info
не заполнено:
{item1: "data", item2:"data", info: {} }
Не уверенчто мне не хватает технически , чтобы получить это разрешение для результата.
Как только у меня есть обещание (оболочка), что вызывает его разрешение?И когда это не происходит, что является вероятной проблемой?
Спасибо всем, кто может помочь.